【问题标题】:JSF CDI target unreachableJSF CDI 目标无法访问
【发布时间】:2014-10-11 06:57:48
【问题描述】:

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

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

【问题讨论】:

    标签: jakarta-ee cdi jsf-2.2


    【解决方案1】:

    你好像不小心把'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" />
    

    希望它有效。

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 1970-01-01
      • 2021-03-12
      • 2019-05-10
      • 2023-03-25
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2015-09-14
      相关资源
      最近更新 更多