我遇到了一个问题,这可能在这个论坛中很常见,但没有找到好的解决方案。
为什么会出现此问题以及如何解决。
我的节目详情如下
@Named("login")
@SessionScoped
public class Login implements Serializable {
private String userId;
private String password;
@Inject
private UserBeanLocal userBean;
public Login() {
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String isValid(){
if(userBean.getUser(userId).getPassword().equals(getPassword())) {
return "home?faces-redirect=true";
}
return "index?faces-redirect=true";
}
和index.xhtml
<h:form>
<h:outputText class="title" value="Login"/><br/>
<h:inputText id="userId"
value="#{login.userId}"
requiredMessage="User Id is required!" /><br />
<h:inputText id="password"
value="#{login.password}"
requiredMessage="Password is required!"/>
<h:commandButton id="submit"
value="Submit"
action="#{login.isValid()}"/>
</h:form>
并且web.xml和beans.xml文件已经存在..
答案 0 :(得分:0)
CDI容器是否正常启动?请检查您的日志或尝试注入没有实现的接口,并确保抛出异常。
此外,如果您在beans.xml中没有定义任何内容,那么请删除文件中的所有内容,使其完全为空。
删除@Named
定义的(“登录”)部分,使用与默认值完全相同的值覆盖是多余的。
确保使用正确的包导入@SessionScoped。你想要的是javax.enterprise。
进一步回答以下问题:
1)你的容器是什么? 2)CDI以前是否工作过或者这是您的第一次尝试? 3)描述beans.xml文件的确切位置。
从servlet容器中粘贴启动日志也很有帮助(Tomcat,jboss无论如何)