2014-12-05 28 views
0

我是JSF中的新成員,但遇到此錯誤,不知道如何解決它。 我在線閱讀了一些類似的問題,但他們都無法解決我的問題。警告:/index.xhtml @ 18,82 value =「#{loginBean.email}」:目標無法訪問,標識符'loginBean'已解析爲空

這裏我的課:

的index.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:p="http://primefaces.org/ui" 
     lang="en-us"> 
    <h:head> 
     <title>Welcome </title> 
    </h:head> 
    <h:body> 
     <center> 
      <p:outputLabel><h1>Welcome</h1></p:outputLabel> 
      <br/> 
      <h:form id="loginForm"> 
      <p:panel id="loginPanel" header="Login" style="width: 360px;"> 
       <p:panelGrid columns="2"> 
        <p:outputLabel id="email_outputText" value="Email" for="email_inputText"/> 
        <p:inputText id="email_inputText" value="#{loginBean.email}"></p:inputText> 
        <p:outputLabel id="password_outputText" value="Password" for="password_inputText"/> 
        <p:password id="password_inputText" value="#{loginBean.password}" feedback="false"></p:password> 
       </p:panelGrid>  
        <br/> 
        <p:commandButton action="#{loginBean.MD5}" value="Login" update="loginForm"></p:commandButton> 
      </p:panel> 
     </h:form> 
     </center> 
    </h:body> 
</html> 

LoginBean.java

package beans.controller; 

import java.io.Serializable; 
import java.io.UnsupportedEncodingException; 
import java.math.BigInteger; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.annotation.ManagedBean; 
import javax.enterprise.context.SessionScoped; 

@ManagedBean(value="loginBean") 
@SessionScoped 
public class LoginBean implements Serializable{ 

    /** 
    * attribute that will contain the password input by the user 
    */ 
    private String password; 
    /** 
    * attribute that will contain error message 
    */ 
    private String message; 
    /** 
    * attribute that will contain the user email input by the user 
    */ 
    private String email; 
    /** 
    * attribute that will contain the hash of password input by the user 
    * We remember that for security reasons password are stored in the DB in way that 
    * it can't be restored for any reasons 
    */ 
    private String hash_password; 

    /** 
    * getter method for attribute hash_password 
    * @return hash_password 
    */ 
    public String getHash_password() { 
     return hash_password; 
    } 

    /** 
    * setter method for hash_password 
    * @param hash_password 
    */ 
    public void setHash_password(String hash_password) { 
     this.hash_password = hash_password; 
    } 

    /** 
    * getter method for attribute password 
    * @return password 
    */ 
    public String getPassword() { 
     return password; 
    } 

    /** 
    * setter method for attribute password 
    * @param password 
    */ 
    public void setPassword(String password) { 
     this.password = password; 
    } 

    /** 
    * getter method for attribute message 
    * @return message 
    */ 
    public String getMessage() { 
     return message; 
    } 

    /** 
    * setter methos for attribute message 
    * @param message 
    */ 
    public void setMessage(String message) { 
     this.message = message; 
    } 

    /** 
    * getter method for attribute email 
    * @return email 
    */ 
    public String getEmail() { 
     return email; 
    } 

    /** 
    * setter method for attribute email 
    * @param email 
    */ 
    public void setEmail(String email) { 
     this.email = email; 
    } 

    /** 
    * Method that checks if the user exists inside the users database 
    * and it creates a new session 
    * @return String: it returns the page where we have to be readdressed 
    */ 
    public String login(){ 
     //I check that the user exists inside the users database 
     boolean result=UserEJB.login(email,password); 

     if(result){ 
      return "home"; 
     }else{ 
      return "login"; 
     } 
    } 

    /** 
    * MD5 algorithm for encrypting password. We provide a clear password as input 
    * and as output we get a hashed function 
    * @param message 
    * @throws NoSuchAlgorithmException 
    */ 
    private void MD5(String password) throws UnsupportedEncodingException 
    { 
     try { 
      MessageDigest m=MessageDigest.getInstance("MD5"); 
      m.update(password.getBytes(),0,password.length()); 
      System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16)); 

     } catch (NoSuchAlgorithmException ex) { 
      Logger.getLogger(LoginBean.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

} 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.1" 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-app_3_1.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> 

當我運行它,我得到這個錯誤:

Warning: /index.xhtml @18,82 value="#{loginBean.email}": Target Unreachable, identifier 'loginBean' resolved to null 
javax.el.PropertyNotFoundException: /index.xhtml @18,82 value="#{loginBean.email}": Target Unreachable, identifier 'loginBean' resolved to null 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) 
    at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:126) 
    at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171) 
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045) 
    at javax.faces.component.UIInput.validate(UIInput.java:975) 
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1248) 
    at javax.faces.component.UIInput.processValidators(UIInput.java:712) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    at org.primefaces.component.panel.Panel.processValidators(Panel.java:287) 
    at javax.faces.component.UIForm.processValidators(UIForm.java:253) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    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:415) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'loginBean' 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) 
    ... 45 more 

Severe: javax.el.PropertyNotFoundException: /index.xhtml @18,82 value="#{loginBean.email}": Target Unreachable, identifier 'loginBean' resolved to null 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) 
    at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:126) 
    at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171) 
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045) 
    at javax.faces.component.UIInput.validate(UIInput.java:975) 
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1248) 
    at javax.faces.component.UIInput.processValidators(UIInput.java:712) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    at org.primefaces.component.panel.Panel.processValidators(Panel.java:287) 
    at javax.faces.component.UIForm.processValidators(UIForm.java:253) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1258) 
    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:415) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'loginBean' 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) 
    ... 45 more 

回答

2

要導入錯包JSFmanagedbeans

更換這些:

import javax.annotation.ManagedBean; 
import javax.enterprise.context.SessionScoped; 

import javax.faces.bean.ManagedBean;  
import javax.faces.bean.SessionScoped; 

您匯入的聯絡人是JAVAEECDI。 您可能正在使用Tomcat,這就是爲什麼他們沒有工作。

+0

你說錯了,而不是關於爲什麼http://stackoverflow.com/questions/15057564/why-are-there-different-bean-management-annotations/15058240#15058240 – kolossus 2014-12-05 21:49:48

相關問題