2014-10-11 87 views
-1

我想在JBoss Wildfly中运行JSF演示。它来自Wildfly的快速入门演示。这里有两个文件,CreateController.java和JSF文件。我收到此错误:JSF CDI target unreachable

Context Path:/wildfly-greeter 
Servlet Path:/faces 
Path Info:/create.xhtml 
Query String:null 
Stack Trace 
javax.servlet.ServletException: /create.xhtml @29,75 value="#{newdUser.username}":  Target Unreachable, identifier 'newdUser' resolved to null 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) 

为什么生产者字段“newUser”无法访问?我没有改变演示中的任何内容。

@Named 
@RequestScoped 
public class CreateController { 

@Inject 
private FacesContext facesContext; 

@Inject 
private UserDao userDao; 

@Named 
@Produces 
@RequestScoped 
private User newUser = new User(); 

public void create() { 
    try { 
     userDao.createUser(newUser); 
     String message = "A new user with id " + newUser.getId() + " has been created successfully"; 
     facesContext.addMessage(null, new FacesMessage(message)); 
    } catch (Exception e) { 
     String message = "An error has occured while creating the user (see log for details)"; 
     facesContext.addMessage(null, new FacesMessage(message)); 
    } 
} 
} 

CreateControl.xhtml

 <h:panelGrid columns="3"> 
      <h:outputLabel for="username">Enter username:</h:outputLabel> 
      <h:inputText id="username" value="#{newdUser.username}" /> 
      <h:message for="username" /> 
    </h:panelGrid> 
     <h:commandButton action="#{createController.create}" 
      value="Add User" /> 

回答

0

看来你不小心把一个 'd' 的

value="#{newdUser.username}" 

,而不是

value="#{newUser.username}" 

这不是在源在Github任。

IMO可以简化代码有点像

@Named 
@RequestScoped 
public class CreateController { 

    @Inject 
    private UserDao userDao; 

    private User newUser = new User(); // +getter/setter 

    public void create() { 
    try { 
     userDao.createUser(newUser); 
     String message = "A new user with id " + newUser.getId() + " has been created successfully"; 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(message)); 
    } catch (Exception e) { 
     String message = "An error has occured while creating the user (see log for details)"; 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(message)); 
    } 
    } 
} 

<h:panelGrid columns="3"> 
     <h:outputLabel for="username">Enter username:</h:outputLabel> 
     <h:inputText id="username" value="#{createController.newUser.username}" /> 
     <h:message for="username" /> 
</h:panelGrid> 
<h:commandButton action="#{createController.create}" value="Add User" /> 

希望工程。