【问题标题】:error in taking input in jsf form以 jsf 形式输入错误
【发布时间】:2010-07-15 09:28:39
【问题描述】:

加载登录页面时,输入文本框显示#{ad.userid}。当我删除它并输入 id 和 pwd 并单击提交按钮时,将调用登录方法,但 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的action方法。登录之前成功。所有 db 连接都在构造函数中设置。

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;
}

【问题讨论】:

  • 编辑时,邮件格式规则在右栏描述...
  • 感谢您编辑我的问题。
  • 这个问题解决了吗?

标签: jsf


【解决方案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 范围以查看它是否有效,以丢弃其他问题

【讨论】:

  • 我不明白如何在代码中添加
【解决方案2】:

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

2) 尝试编写一个Phaselistener,看看jsf生命周期的所有apply request和update model阶段是否发生。

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    相关资源
    最近更新 更多