如何使用JSF实现登录页面?目前,我有一个注册表单,它将值存储在Java Bean中的一个变量中
我现在需要为此创建一个登录和注销页面。我将如何实现这一目标?
以下是bean的代码:
public String checkValidUser(String name) {
dbData(name);
if(name.equalsIgnoreCase(dbUsername)) {
if(password.equals(dbPassword)) {
return "success.xhtml";
}
else {
return "fail.xhtml";
}
}
else {
return "fail.xhtml";
}
}
这是登录页面:
<h:outputText value="Forename"/>
<h:inputText id="forename" size="25" maxlength="30" required="true"
requiredMessage="Please Enter Your Forename"
validatorMessage="FR ERR"
value="#{databaseLoginReg.name}">
<f:validateLength maximum="30" minimum="1"/>
</h:inputText>
<h:message errorClass="error" for="forename"/>
<h:outputText value="Enter Password"/>
<h:inputSecret id="password" size="25" maxlength="16" required="true"
requiredMessage="Please Enter a Password"
validatorMessage="ERR"
value="#{databaseLoginReg.password}">
<f:validateLength maximum="16" minimum="8"/>
</h:inputSecret>
<h:message errorClass="error" for="password" />
<h:commandButton value="Log In" action="{databaseLoginReg.checkValidUser}"/>
错误:
javax.el.MethodNotFoundException: /logIn.xhtml @47,94 action="#{databaseLoginReg.checkValidUser}": Method not found: databaseLoginReg@77ff927f.checkValidUser()
托管Bean中的方法签名(有1个String参数)与视图中使用的方法签名不同(没有任何参数)。这就是JSF触发异常的原因
您应该统一方法的签名以使其能够通过视图使用,例如,删除方法public String checkValidUser(){ ... }
的参数,同时可以在托管bean中轻松获得name
和password
。