2014-10-11 6 views
-1

Я пытаюсь запустить демо JSF в JBoss Wildfly. Это из демонстрации с быстрым стартом с 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 либо ,

ИМО вы можете упростить код немного как

@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" /> 

Надеются, что это работает.

Смежные вопросы