2013-05-17 5 views
0

웹 응용 프로그램과 CDI를 연결하려고하지만 작동하지 않으려합니다 ... beans.xml 파일이 WEB-INF입니다. 나는 CDI-콩에서 필드에 액세스하려고 할 때 나는 내려면 javax.el.PropertyNotFoundException대상에 연결할 수없는 CDI

index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 

<h:head> 
    <title>Simple JSF Facelets page</title> 
</h:head> 

<h:body> 
      <h:form > 

       <p:panelGrid columns="2"> 
        <h:outputLabel for="username" value="Username: "/> 
        <p:inputText id="username" value="#{credentials.username}" /> 
       </p:panelGrid> 
       <p:commandButton value="Login" action="#{credentials.login}" /> 
      </h:form> 
</h:body> 

</html> 

Credentials.java

import javax.enterprise.context.RequestScoped; 
import javax.inject.Inject; 
import javax.inject.Named; 


@Named 
@RequestScoped 
public class Credentials{ 

    private String username; 
    private String password; 



    @Inject 
    AuthController authController; 

    public String login(){ 
     authController.authenticate(username); 
     return "start"; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 

     this.username = username; 
    } 
} 

AuthController.java

import addressbook.baselibs.enterprise.stereotype.Current; 
import addressbook.user.entity.User; 
import addressbook.user.repository.UserRepository; 

import javax.enterprise.context.Conversation; 
import javax.enterprise.context.RequestScoped; 
import javax.enterprise.inject.Produces; 
import javax.faces.context.FacesContext; 
import javax.inject.Inject; 
import javax.inject.Named; 
import java.io.Serializable; 

@Named 
@RequestScoped 
public class AuthController implements Serializable{ 

    @Inject 
    private Authentication authentication; 

    @Inject 
    private UserRepository userRepository; 

    @Inject 
    private FacesContext facesContext; 

    @Inject 
    private Conversation conversation; 

    @Produces 
    @Named 
    @Current 
    public User getCurrentUser() { 
     return authentication.getCurrentUser(); 
    } 

    public void authenticate(String username) { 
     if(isLogged()) { 
      throw new IllegalStateException("User is logged and tries to authenticate again"); 
     } 

     User user = userRepository.getForUserName(username); 
     if(user == null) { 
      // User not Found 
     } 

     authentication.setCurrentUser(user); 
     conversation.begin(); 
    } 

    public void logout() { 
     authentication.setCurrentUser(null); 
     conversation.end(); 
    } 

    public boolean isLogged() { 
     return authentication.getCurrentUser() != null; 
    } 

} 

스택 트레이스

00:58:49,975 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http--127.0.0.1-8080-1) /index.xhtml @15,86 value="#{credentials.username}": Target Unreachable, identifier 'credentials' resolved to null: javax.el.PropertyNotFoundException: /index.xhtml @15,86 value="#{credentials.username}": Target Unreachable, identifier 'credentials' resolved to null 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at org.primefaces.renderkit.InputRenderer.getConverter(InputRenderer.java:154) [primefaces-3.1.1.jar:] 
    at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:167) [primefaces-3.1.1.jar:] 
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIInput.validate(UIInput.java:960) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1233) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIInput.processValidators(UIInput.java:698) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIForm.processValidators(UIForm.java:253) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at org.primefaces.component.layout.Layout.processValidators(Layout.java:245) [primefaces-3.1.1.jar:] 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] 
    at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] 
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] 
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21] 
+0

AuthController 코드를 부여하십시오 –

+0

AuthController 소스 코드를 추가했습니다 –

+0

어떤 응용 프로그램 서버를 사용하고 있습니까? –

답변

0

AuthController (개인 대화 대화)에 "대화"범위가 지정된 구성 요소를 주입하는 것처럼 보입니다 ... 대화식 범위가 지정된 구성 요소는 RESTORE_VIEW 단계 후에 주입을 수행하는 데 사용됩니다. 그래서 " RESTORE_VIEW "단계에서이 대화 범위 구성 요소를 인스턴스화 할 수 없으며이 오류가 이 오류를 발생시킵니다 ...이 대화 구성 요소에 @ inject 대신 Component.getInstance()를 사용하려고 시도하고 문제를 해결하는 데 도움이되는지 확인하십시오. 발행물?

+0

여기 대화는 표준 CDI 대화 개체입니다. –

관련 문제