경고 : # {generate.viewReportPDF} : javax.el.propertynotfoundException : 대상에 연결할 수 없음, 식별자 '생성'NULL [복제]
-
13-11-2019 - |
문제
이 질문은 이미 여기에 답변이 있습니다 :
-
javax.el.propertynotFoundException 식별 및 해결 : 대상 unreachable
13 답변
나는 JSF에 정말로 새로운 것이지만 여기에 내 문제가 있습니다 :
.WARNING: #{Generate.viewReportPDF}: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'Generate' resolved to null
나는 많이 수색하고 많은 것을 시도하지만 그것이 작동하지 않았기 때문에 도움을 요청하고 있습니다 :
여기가 있습니다 Package 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 (웹 -IF)
.<?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>
여기에 내 faces-config.xml (웹 -IF) :
.<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 : 대상에 연결할 수 없음, 식별자 '생성'null
해결책
Java 이름 지정 규칙은 인스턴스 변수 이름이 소문자로 시작하는 것입니다.#{generate.viewReportPDF}
대신 #{Generate.viewReportPDF}
를 사용해야합니다.
정말 은 대문자의 인스턴스 변수 이름 (나쁜)을 사용하는 데 주장하면 @ManagedBean
주석에서 항상 재정의 할 수 있습니다.
.
@ManagedBean(name="Generate")
@SessionScoped
public class Generate {
@SessionScoped
주석을 추가하면 잊어 버렸습니다.faces-config.xml
에서 해당 불필요한 구식 관리 Bean 구성을 제거하고 주석으로 충돌하고 대체 할 수 있습니다.나는 또한 고대 JSPX 대신 얼굴을 사용하는 것이 좋습니다.