我的 JSF 2.2 和 CDI 有问题,我的 managerbean 没有解决,出现这个错误
“值=”#{userBean.user.name}”:目标无法到达,标识符'userBean'解析为空“
这是我的经理豆。
@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>
我想分享我对这个异常的体验。我的 JSF 2.2 应用程序在 WildFly 8.0 上运行良好,但有一次,当我启动服务器时,我遇到了这个“目标无法访问”异常。实际上,JSF 注释或标签没有问题。
我唯一要做的就是清理项目。完成此操作后,我的应用程序再次正常运行。
我希望这会帮助别人!
你需要
@ManagedBean(name="userBean")
确保你有
getUser()
方法。setUser()
方法的类型应该是void
.确保
User
班级也有适当的setters
和getters
。我解决了这个问题。
我的 Java 版本是 1.6,我发现它在 CDI 中使用 1.7,但是之后我将 Java 版本更改为 1.7 并导入包
javax.faces.bean.ManagedBean
,一切正常。
右键单击项目 > 属性 > Java 编译器 > 确保安装在类路径中的 Java 版本与 java 编译器相同。 谢谢@PM77-1