在JSF视图中找不到方法



如何使用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中轻松获得namepassword

相关内容

  • 没有找到相关文章

最新更新