2012-02-27 2 views
1

Я действительно новичок в JSF, но вот моя проблема:ВНИМАНИЕ: # {Generate.viewReportPDF}: javax.el.PropertyNotFoundException: Target недостижим, идентификатор «Generate» решил обнулить

WARNING: #{Generate.viewReportPDF}: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'Generate' resolved to null 

Я искал и попробовать много вещей, но это не сработало, поэтому я прошу вашей помощи:

Вот мой Generate.java в пакете com.test:

package com.test; 

import javax.faces.context.FacesContext; 
import javax.inject.Scope; 
import javax.servlet.http.HttpServletResponse; 
import javax.xml.transform.TransformerException; 
import net.sf.jasperreports.engine.*; 
import net.sf.jasperreports.engine.design.JasperDesign; 
import net.sf.jasperreports.engine.xml.JRXmlLoader; 
import javax.faces.bean.ManagedBean; 

@ManagedBean 
public class Generate { 
    ... 

    public void viewReportPDF() throws IOException { 
    ... 
    } 

} 

Вот мой web.xml (в WEB -INF)

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <context-param> 
    <param-name>javax.faces.CONFIG_FILES</param-name> 
    <param-value>/WEB-INF/faces-config.xml</param-value> 
</context-param> 

    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>faces/init.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Здесь мои лица-config.xml (в WEB-INF):

<managed-bean> 
     <managed-bean-name>Generate</managed-bean-name> 
     <managed-bean-class> 
      com.test.Generate 
     </managed-bean-class> 
     <managed-bean-scope>session</managed-bean-scope> 
</managed-bean> 

здесь мой init.jsp:

<jsp:root version="1.2" xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:jsp="http://java.sun.com/JSP/Page"> 
     <jsp:directive.page contentType="text/html;charset=UTF-8" 
      pageEncoding="UTF-8" /> 
     <f:view> 
      <html> 
      <head> 
      <title>Test iReport With JSF</title> 
      </head> 
      <body style="background-color: #fff4db"> 
      <h:form id="reportForm" target="report"> 
       <h:commandButton id="pdfButton" value="Visualiser PDF" 
        styleClass="buttonStyle" action="#{Generate.viewReportPDF}" /> 

      </h:form> 
      </body> 
      </html> 
     </f:view> 
    </jsp:root> 

И когда я бегу у меня есть эта ошибка:

ВНИМАНИЕ: # {Generate.viewReportPDF}: javax.el.PropertyNotFoundException: Targ et Unreachable, идентификатор «Generate» разрешен к null

ответ

2

Соглашения о присвоении имен Java указывают, что имена переменных экземпляра начинаются с строчных букв. Вы должны использовать #{generate.viewReportPDF} вместо #{Generate.viewReportPDF}.

Если вы действительно настаиваете на использование имени переменного капитализируются экземпляр (что плохо), то вы всегда можете изменить его в @ManagedBean аннотации:

@ManagedBean(name="Generate") 
@SessionScoped 
public class Generate { 

Обратите внимание, что я добавил @SessionScoped аннотации, вы Забыл. Вы также должны удалить эту избыточную и старомодную конфигурацию управляемого компонента в faces-config.xml, которая будет только сталкиваться с аннотациями и отменять их. Я бы также рекомендовал использовать Facelets вместо древнего JSPX.

+0

Спасибо за помощь, но она по-прежнему не работает, я добавил @SessionScoped, и я переименовал '# {Generate.viewReportPDF}' в '# {generate.viewReportPDF}'. И теперь у меня такая же ошибка сгенерировать вместо Generate. – Louis

+0

Мое плохое! Я удалил конфигурацию управляемого bean-компонента в faces-config.xml, и теперь все работает! Спасибо – Louis

+0

Добро пожаловать :) – BalusC

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