경고 : # {generate.viewReportPDF} : javax.el.propertynotfoundException : 대상에 연결할 수 없음, 식별자 '생성'NULL [복제]

StackOverflow https://stackoverflow.com/questions/9470643

문제

이 질문은 이미 여기에 답변이 있습니다 :

  • 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 대신 얼굴을 사용하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top