在JSF视图中找不到的方法

时间:2014-04-10 08:52:09

标签: java jsf methods xhtml

如何使用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()

1 个答案:

答案 0 :(得分:0)

managed-Bean中的方法签名(带有1个String参数)与视图中使用的不同(没有任何参数)。这就是JSF触发异常的原因 您应该统一方法的签名以通过视图启用它,例如,删除方法public String checkValidUser(){ ... }的参数,同时您可以轻松地获取namepassword托管bean。