2012-04-25 2 views
2

Я указываю имя поля в ireport как имя атрибута в классе сущности. Но я получаю следующее исключение.java.lang.NoSuchMethodException: Неизвестное свойство 'activePackage'

java.lang.NoSuchMethodException: Unknown property 'activePackage' 
    at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1122) 
    at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686) 
    at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715) 
    at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290) 
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111) 
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:96) 
    at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:100) 
    at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:895) 
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:860) 
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:837) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1434) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:126) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765) 
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84) 
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) 
    at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:669) 
    at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:559) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

Ниже мой jrxml код

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <field name="activePackage" class="java.lang.String"> 
     <fieldDescription><![CDATA[activePackage]]></fieldDescription> 
    </field> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="27" splitType="Stretch"> 
      <staticText> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[activePackage]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="26" splitType="Stretch"> 
      <textField> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{activePackage}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
    <columnFooter> 
     <band height="45" splitType="Stretch"/> 
    </columnFooter> 
    <pageFooter> 
     <band height="54" splitType="Stretch"/> 
    </pageFooter> 
    <summary> 
     <band height="42" splitType="Stretch"/> 
    </summary> 
</jasperReport> 

Ниже один мой класс сущностей код:

@Entity 
@JsonAutoDetect 
@Table(name = "ra_bdr_rating") 
public class RaBdrRating extends BaseModel { 
@Column(name="active_package") 
    private String activePackage; 
public String getActivePackage() { 
     return activePackage; 
    } 
public void setActivePackage(String activePackage) { 
     this.activePackage = activePackage; 
    } 
} 

Это код в моем классе контроллера

public ModelAndView generateHtmlReport(@ModelAttribute("reports") RaReports  model,ModelAndView modelAndView) throws Exception{ 

    Map<String,Object> parameterMap = new HashMap<String,Object>(); 

    List<RaBdrRating> packagesList = reportsDao.retrieveAllPackages(model); 

    JRDataSource JRdataSource = new JRBeanCollectionDataSource(packagesList); 

    parameterMap.put("datasource", JRdataSource); 

    //htmlReport bean has ben declared in the jasper-views.xml file 
    modelAndView = new ModelAndView("htmlReport", parameterMap); 

    return modelAndView; 

} 

Здесь activePackage Я объявил как приватную переменную типа string в моем классе сущности. Поэтому в моем jrxml я даю то же имя с fieldDescription. Если я нажму на предварительный просмотр в iReport, я также получаю ту же проблему. Я использую iReport 4.5.0. Здесь retrieveAllPackages (model) имеет запрос jpa, который извлекает все пакеты и возвращает в виде списка типа RaBdrRating.RaBdrRating - это мой класс сущности, который я опубликовал ранее. Я передаю этот список в источник JRBeanCollectionDatasource и поместив источник данных в map.Now, я хочу отобразить список в моем отчете. Поэтому я разрабатываю отчет в iReport таким образом, что имя поля должно совпадать с именем атрибута в классе сущности. Я думаю, теперь вы получите представление о это.

+3

хорошо, помогая людям потребуется фрагмент кода первым. Затем расскажите о своей цели и о том, что вы пробовали. Также вы должны использовать отладчик и проверить значения, которые получают ваши переменные. После этого может быть полезно посмотреть на эту трассировку стека. Что ты думаешь? –

+0

Определенно разместите соответствующую выдержку из вашего .jrxml. –

+0

Является частным полем 'activePackage'? Если да, можете ли вы попробовать с помощью методов его установки? – Vaandu

ответ

2

Удалите FileDescription из поля

<fieldDescription><![CDATA[activePackage]]></fieldDescription> 
2

Добавление этого «ложные» работает для меня

JRDataSource JRdataSource = new JRBeanCollectionDataSource(packagesList, **false**); 
+1

Ссылка пожалуйста – Sarz

Смежные вопросы