2013-10-03 32 views
0

我在單個頁面上收到錯誤,並且在單擊SUBMIT按鈕後發生唯一錯誤。試圖在Glassfish 4上使用CDI導致javax.el.PropertyNotFoundException:目標無法訪問,標識符'indexMB'解析爲空

javax.el.PropertyNotFoundException:目標不可達,標識符「indexMB」解析爲空

我順着話題JSF2 form submit " Target Unreachable, identifier 'myModel' resolved to null ONLY on submit的建議,但並沒有幫助我。

任何幫助將是非常有用的。

按照我的設置和我的文件:

  • Glassfish的4
  • Primefaces 3.5
  • 公地文件上傳1.3
  • 公地IO 2.4

index.xhtml

<f:loadBundle basename="i18n" var="bundle" /> 
<h:head> 
    <title>#{bundle['index_title']}</title> 
</h:head> 
<h:body> 
    #{bundle['index_appname']} 
    <br /> 
    <h:form id="frmIndex"> 
     <p:panelGrid columns="2"> 
      <p:outputLabel for="user" value="#{bundle['lblUser']}" /> 
      <p:inputText id="user" value="#{indexMB.user}" /> 

      <p:outputLabel for="password" value="#{bundle['lblPassword']}" /> 
      <p:password id="password" value="#{indexMB.password}" /> 
     </p:panelGrid> 
     <p:commandButton action="#{indexMB.loginTest}" value="#{bundle['btn_login']}" /> 
    </h:form> 
</h:body> 

IndexMB.java

@ManagedBean ("indexMB") 
@RequestScoped 
public class IndexMB { 

private String password; 
private String user; 

public IndexMB() { 
} 

public String loginTest(){ 
    ... 
} 

// getters and setters 
} 

日誌(Glassfish的)

javax.el.PropertyNotFoundException: /index.xhtml @18,66 value="#{indexMB.user}": Target Unreachable, identifier 'indexMB' resolved to null 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) 
    at org.primefaces.renderkit.InputRenderer.findImplicitConverter(InputRenderer.java:170) 
    at org.primefaces.renderkit.InputRenderer.findConverter(InputRenderer.java:190) 
    at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:196) 
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1046) 
    at javax.faces.component.UIInput.validate(UIInput.java:976) 
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1249) 
    at javax.faces.component.UIInput.processValidators(UIInput.java:712) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) 
    at javax.faces.component.UIForm.processValidators(UIForm.java:253) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) 
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195) 
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
    at java.lang.Thread.run(Thread.java:724) 
    Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'indexMB' resolved to null 
    at com.sun.el.parser.AstValue.getTarget(AstValue.java:174) 
    at com.sun.el.parser.AstValue.getType(AstValue.java:86) 
    at com.sun.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:201) 
    at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93) 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98) 
    ... 43 more 

web.xml

<?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> 
    <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/index.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

faces-config.xml

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="2.2" 
     xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> 

    <application> 
     <locale-config> 
      <default-locale>pt_BR</default-locale> 
      <supported-locale>en</supported-locale> 
      <supported-locale>fr</supported-locale> 
     </locale-config> 
    </application> 
</faces-config> 

beans.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans 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/beans_1_0.xsd"> 
</beans> 
+1

我沒有看到任何地方CDI真的在這裏發揮作用。儘管如此,你在哪裏導入'@ ManagedBean'和'@ RequestScoped' bean – kolossus

回答

3

你的bean實在不是一個CDI豆我想你的問題是由進口混合起來造成的。所以嘗試

@javax.inject.Named //defaults to "indexMB" 
@javax.enteprise.context.RequestScoped 
public class IndexMB { 
     //rest of your class here 
} 
+0

我通過「@Named」更改了「@ManagedBean」,它工作正常。謝謝! –

相關問題