Jsf 无法访问目标,标识符';用户';已解析为空

Jsf 无法访问目标,标识符';用户';已解析为空,jsf,jsf-2.2,Jsf,Jsf 2.2,所以我有一个非常奇怪的问题。。。我已经尝试了在StackOverflow上搜索,并尝试了我能找到的所有东西,但我根本无法修复这个错误。错误是: /index.xhtml@15,60 value=“#{user.name}”:无法访问目标,标识符“user”解析为null 这是一个学校项目,这个项目对我的一些同学有效,但对一些同学也不起作用。当我们打开它们的时候会不会是NetBeans搞砸了?到目前为止,至少有两个人让它工作,但至少有两个人也有这个错误 index.xhtml <?xml v

所以我有一个非常奇怪的问题。。。我已经尝试了在StackOverflow上搜索,并尝试了我能找到的所有东西,但我根本无法修复这个错误。错误是:

/index.xhtml@15,60 value=“#{user.name}”:无法访问目标,标识符“user”解析为null

这是一个学校项目,这个项目对我的一些同学有效,但对一些同学也不起作用。当我们打开它们的时候会不会是NetBeans搞砸了?到目前为止,至少有两个人让它工作,但至少有两个人也有这个错误

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://java.sun.com/jsf/html">
    <h:head>
        <title>Welcome</title>
    </h:head>
    <h:body>
        <h:form>
            <h3>Please enter your name and password.</h3>   
            <table>
                <tr>
                    <td>Name:</td>
                    <td><h:inputText value="#{user.name}"/></td>
                    <td>.</td>
                    <td><h:inputText value="#{user.userId}"/></td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td><h:inputSecret value="#{user.password}"/></td>
                </tr>
            </table>
            <p><h:commandButton value="Login" action="welcome"/></p>
        </h:form>
    </h:body>
</html>
<?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://java.sun.com/jsf/html">
    <h:head>
        <title>Welcome</title>
    </h:head>
    <h:body>
        <h3>Welcome to JavaServer Faces, #{user.name}.#{user.userId}!</h3>
        <h3>your password is #{user.password}</h3>
    </h:body>
    <h:form>
        <h:commandButton value="Logout" action="index"/>
    </h:form>
</html>
它的基本功能是在index.xhtml上获取任何用户名、id和密码。然后按login,它会将您发送到welcome.xhtml(因为
action=“welcome”
)。然后,welcome.xhtml应该在页面上发布您的用户名、id和密码。但是,当我按下登录按钮时,会出现以下错误:

/index.xhtml@15,60 value=“#{user.name}”:无法访问目标,标识符“user”解析为null


我确实尝试过切换到ManagedBean(
@ManagedBean(name=“user”)
),但结果是相同的。

我找到了解决方法。显然,对于我们中的一些人来说,导入的项目名称与
元素的名称不匹配。我们所要做的就是进入WEB-INF并找到
glassfishweb.xml
。在该文件中,检查
中的内容,并将其替换为项目名称,或者简单地将项目重命名为该元素中的任何内容


花了几个小时才弄明白,但希望其他人会发现这一点,并感谢我的回答。

@Tiny奇怪的是,如果我把这个项目发送给另一位同学,他可以轻松地用NetBeans打开它,而且效果很好。我们中的一些人也有同样的问题,但它也适用于一些人。可能是NetBeans出了问题吗?不,NetBeans与这个问题无关。服务器负责运行对NetBeans或任何其他正在使用的IDE一无所知的应用程序。它可能与正在使用的bean管理框架有关,如CDI、JSF和Spring。尝试正确清理并构建/部署应用程序。应该在链接的问题中找到一个合适的匹配项。@不过,Tiny NetBeans会决定它应该运行哪个JSF版本,对吗?我不明白的是,为什么它对某些人有效而对其他人无效。不幸的是,在我问自己这个问题之前,我确实检查了这个链接问题的所有内容。如果在一个新的测试应用程序中尝试,除了一个XHTML文件和一个没有额外依赖项的托管bean之外,没有其他任何东西,那么它会起作用吗?如果我要创建一个与XHTML/ManagedBean具有相同代码的应用程序,那么它将可以正常工作,因为这类事情已经在我的环境中正常工作,没有任何缺陷。因此,很难掌握实际原因,因为它在完全相同的环境中是不可复制的。
package com.corejsf;

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;

@Named("user")
@SessionScoped
public class UserBean implements Serializable {

    private String name;
    private String password;
    private Integer userId;

    public String getName() {
        return name;
    }

    public void setName(String newValue) {
        name = newValue;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String newValue) {
        password = newValue;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer newValue) {
        userId = newValue;
    }

    public String logout() {
        FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
        return "index";
    }
}