【问题标题】:Target Unreachable, identifier resolved to null in JSF 2.2 [duplicate]目标不可达,标识符在 JSF 2.2 中解析为 null [重复]
【发布时间】:2013-12-28 13:38:44
【问题描述】:

我的 JSF 2.2 和 CDI 有问题,我的 managerbean 没有解决,出现这个错误

"value="#{userBean.user.name}": 目标不可达,标识符 'userBean' 解析为 null"

这是我的经理豆。

@ManagedBean
@RequestScoped
public class UserBean implements Serializable {
    private User user;

    public void setUser(user) {
        this.user = user;
    }
    ...
}

我的看法是:

<h:form id="login-form">
    <h:outputText value="User"/>
    <h:inputText value="#{userBean.user.name}" id="username"/>

    <h:outputText value="Senha"/>
    <h:inputSecret value="#{userBean.user.password}" id="pasword"/>

    <h:commandButton id="button" value="Login" action="#{userBean.login}"/>

    <h:messages />
</h:form>

【问题讨论】:

  • 你有faces-config.xml吗?
  • 您从哪些包导入这些注释,以及您在哪个应用服务器上运行您的应用?
  • 确保您已正确执行完整的清理、重建、重新部署 ...这是我在 BalusC 的帖子中省略的步骤,它解决了问题。
  • 安装了两个不同的 java 版本也会导致这个错误。我遇到了同样的问题,通过卸载其中一个问题得到了解决。
  • 对我来说,发生此错误是因为存在 1 个罐子。它需要逐行删除/重新添加每个 jar 到类中以识别它

标签: jsf jsf-2.2 managed-bean


【解决方案1】:

我想分享我对这个异常的经验。我的 JSF 2.2 应用程序在 WildFly 8.0 上运行良好,但是有一次,当我启动服务器时,我得到了这个 "Target Unreacheable" 异常。其实 JSF 的注解或者标签是没有问题的。

我唯一要做的就是清理项目。完成此操作后,我的应用又可以正常运行了。

我希望这会对某人有所帮助!

【讨论】:

  • 右键单击服务器 > 清理对我不起作用。我不知道是什么让它工作,但我点击了项目(不是服务器)的重新启动。
  • 这种情况发生在我身上几次,有时清理项目解决了它,有时重新启动 glassfish 工作
  • 有同样的问题,对我来说重新启动和清理不起作用。但重启 Eclipse 后一切恢复正常
  • 我的也是同样的问题,只是我不得不停止服务器,清理服务器并重新启动它。
  • 我可以确认,如果突然出现此异常,而您的项目前一天正在顺利运行,则可能是开发机器的内存不足。如果您反复将计算机关闭到挂起或休眠模式并且长时间(如数周)不重新启动或关闭电源,则尤其可能发生这种情况。最好在断电的情况下重新启动应该会有所帮助。如果您在有状态的虚拟机上工作,同样的情况也是有效的。操作系统和 IDE 的类型也在其中发挥作用
【解决方案2】:
  1. 你需要

    @ManagedBean(name="userBean")

  2. 确保您有getUser() 方法。

  3. setUser() 方法的类型应为void

  4. 确保User 类也有正确的settersgetters

【讨论】:

  • 默认bean名称为userBean...不需要设置。
  • @AlexandreLavoie - 您能否请我参考说明这一事实的官方文档?
  • 是的,setUser的类型是void,不好意思我写的时候写错了。当我把 '(name="userBean")' 显示给我this warning
  • 确保您是从 javax.faces.bean 包中导入此注释。
【解决方案3】:

我解决了这个问题。

我的 Java 版本是 1.6,我发现它使用的是 1.7 和 CDI,但是之后我将 Java 版本更改为 1.7 并导入包 javax.faces.bean.ManagedBean 并且一切正常。

右键单击项目>>属性>> Java编译器>>确保类路径中安装的Java版本与Java编译器相同。 谢谢@PM77-1


【讨论】:

    猜你喜欢
    • 2018-10-23
    • 2014-08-24
    • 2014-08-10
    • 2020-09-28
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2016-03-09
    • 2019-05-10
    相关资源
    最近更新 更多