以jsf形式输入错误

时间:2010-07-15 09:28:39

标签: jsf

加载登录页面时,输入文本框显示#{ad.userid}。当我删除它并输入id和pwd并单击提交按钮时,将调用login方法,但userid属性在bean中给出null值。怎么会发生这种情况,我该如何解决?

以下是login.jsp

<%@ page contentType="text/html"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<f:view>
<html>

        <h:form>
            <h:outputText value="Login"/>
            <h:inputText value="#{ad.userid}" id="log" required="true"/>
            <h:outputText  value="Password" />
            <h:inputSecret id="pw" value="#{ad.password}" required="true"/>
            <h:commandButton  value="submit" action="#{ad.login}"/>
        </h:form>
    </body>
</html>
</f:view>

这是bean的动作方法。登录成功地提前完成了。所有数据库连接都在构造函数中设置。

public String login() {
    ResultSet rs;
    try {
        System.out.println(userid); // this is giving null
        String s = "select id from slogin where id='" + userid + "'";
        System.out.println(s);
        rs = st.executeQuery(s);
        if (rs.next()) {
            String loginid = rs.getString(1);
            if (userid.equals(loginid)) {
                id = loginid;
                return "studhome";
            }
        } else {
            System.out.println("error");
        }
    } catch(Exception e) {

    }
}

Getter和setter方法:

public void setpassword(String pass) {
    this.password = pass;
}

public String getpassword() {
    return password;
}

public void setuserid(String uid) {
    this.userid = uid;
}

public String getuserid() {
    return userid;
}

2 个答案:

答案 0 :(得分:1)

请花点时间编辑您的问题,使用StackOverflow提供的格式代码工具正确格式化。如果使用符号“0101010101”的按钮,则会出现大括号。

答案:

变化:

public void setuserid(String uid)

public void setUserid(String uid)

还有:

public void setpassword(String pass)

public void setPassword(String pass)

看看Java Naming Conventions,JSF依赖它们来访问托管bean的属性。

顺便说一句,尝试将您的支持bean设置为Session范围以查看它是否有效,以丢弃其他问题

答案 1 :(得分:0)

我不确定这是否有用 - 1)在getter和setter中添加debug(sysouts)语句,并使用pakore所说的命名约定(更好的是你可以让eclipse生成getter和setter)。

2)尝试编写一个Phaselistener,看看是否发生了jsf生命周期的所有应用请求和更新模型阶段。