【问题标题】:Why my jsf <h:inputText> dont set the value in bean class?为什么我的 jsf <h:inputText> 没有在 bean 类中设置值?
【发布时间】:2015-09-21 17:03:31
【问题描述】:

我对 JSF 的 &lt;h:inputText&gt; 有疑问,我试图在 bean 类中设置变量的值,但它无法通过 &lt;h:inputText&gt; tag 设置值。我是 JSF 的新手。

我的jsp代码:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="../style.css" />
<title>Tìm hồ sơ</title>
</head>
<body>
    <div id="content">
        <jsp:include page="header.jsp" />
        <h1>Nhập hồ sơ thí sinh - Kì tuyển sinh 2015</h1>
        <f:view>
                <h:form>
                    <font color="black"> Tìm hồ sơ: <br /></font>
                    <table>
                        <tr>
                            <td>SBD:</td>
                            <td><h:inputText id="sbd" value="#{hsinfo.fsbd}"
                                    required="true"></h:inputText></td>
                            <td><h:message for="sbd" /></td>
                        </tr>
                        <tr>
                            <td>Họ tên:</td>
                            <td><h:inputText id="ten" value="#{hsinfo.fname}"></h:inputText></td>
                        </tr>
                        <tr>
                            <td>Giới tính: <h:selectOneRadio id="gioitinh"
                                    value="#{hsinfo.fgioitinh}">
                                    <f:selectItem itemValue="M" itemLabel="Nam" />
                                    <f:selectItem itemValue="F" itemLabel="Nữ" />
                                </h:selectOneRadio>
                            </td>
                        </tr>
                        <div style="position: absolute;margin-top: 24px;margin-left: 654px;">
                            <h:commandButton
                                style="width:84px; height:84px;margin-top:-24px;"
                                action="#{hsinfo.findHS}" value="Tìm kiếm" immediate="true" />
                        </div>
                    </table>
                </h:form>
        </f:view>
    </div>
</body>
</html>

我的豆类:

package Beans;

public class hsinfo {

    private String fsbd;
    private String fname;
    private String fgioitinh;



    public String getFsbd() {
        return fsbd;
    }

    public void setFsbd(String fsbd) {
        this.fsbd = fsbd;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public String getFgioitinh() {
        return fgioitinh;
    }

    public void setFgioitinh(String fgioitinh) {
        this.fgioitinh = fgioitinh;
    }

}

我制作了另一个jsp和bean类,成功通过&lt;h:inputText&gt;标签设置值,但我不知道为什么它在这个jsp和bean类中不起作用!

【问题讨论】:

  • 将 ManagedBean 和适当的范围注释添加到您的 bean。此外,您的 web.xml 需要配置为将该页面发送到 JSF
  • 如果你要学习 JSF,那么你应该按照一个简单的 JSF 教程一步一步来。然后,如果您在学习本教程时遇到任何问题,请在 StackOverflow 上提出一个简短而具体的问题。
  • 另外,JSF 不使用 JSP 页面;它使用 Facelets 页面。此外,我很惊讶您的 %@ taglib 导入正在工作:我从未见过使用该符号,但也许它是 JSP 的东西。再次,按照最近的教程,一步一步。不要只是把东西放在一起,希望它能奏效。
  • @DavidS:JSP 是 JSF 1.x 中的默认视图技术。因此,这表明 OP 正在使用 JSF 1.x 或正在使用完全过时的资源来学习 JSF 2.x。 OP 在问题上放置了[jsf-2] 标记,同时显示了与 JSF 1.x 兼容的代码 sn-p 这一事实确实不是一个好兆头。

标签: jsf


【解决方案1】:

您的问题是由immediate="true" 上的&lt;h:commandButton&gt; 引起的。

<h:commandButton ... action="#{bean.action}" immediate="true" />

它将跳过对所有没有immediate="true" 的输入字段的处理。

摆脱它。

<h:commandButton ... action="#{bean.action}" />

另见:


与具体问题无关,请确保您使用最新的资源来学习 JSF。您的代码是 JSF 1.x 风格,而我们自 2009 年以来已经使用 JSF 2.x。从这里开始:https://stackoverflow.com/tags/jsf/info

【讨论】:

  • f:ajax 中立即数的目的是什么?在我的测试中,它没有跳过验证。
【解决方案2】:

你需要:

  • @Named@ManagedBean 类注释

  • 范围

【讨论】:

  • JSF 1.x 中不存在这些。为此,它在faces-config.xml 中使用&lt;managed-bean&gt;
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2019-09-10
  • 2014-08-23
  • 2012-10-30
  • 1970-01-01
相关资源
最近更新 更多