为什么我的jsf<;h:输入文本>;不在bean类中设置值?

为什么我的jsf<;h:输入文本>;不在bean类中设置值?,jsf,Jsf,我对JSF的有一个问题,我试图在bean类中设置一个变量的值,但它不能通过标记设置值。我是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

我对JSF的
有一个问题,我试图在bean类中设置一个变量的值,但它不能通过
标记设置值。我是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>
我制作了另一个jsp和bean类,它成功地通过
标记设置了值,但我不知道为什么它不能在这个jsp和bean类中工作

您需要:

  • 类上的
    @Named
    @ManagedBean
    注释

  • 范围


您的问题是由
上的
immediate=“true”
引起的

另见:


与具体问题无关,请确保您正在使用最新资源学习JSF。您的代码是JSF1.x风格的,而我们从2009年就开始使用JSF2.x了。从这里开始:。

将ManagedBean和适当的范围注释添加到bean中。另外,您的web.xml需要配置为将该页面发送到JSF。如果您要使用JSF,那么您应该一步一步地遵循简单的JSF教程。然后,如果您在学习本教程时遇到任何问题,可以问一个关于StackOverflow的简短而具体的问题;它使用Facelets页面。另外,我很惊讶您的
%@taglib
导入工作正常:我从未见过使用这种符号,但可能是JSP的东西。同样,按照最近的教程,一步一步。不要把东西放在一起,希望它能工作。@DavidS:JSP是jsf1.x中的默认视图技术。因此,这表明OP正在使用JSF1.x,或者使用完全过时的资源来学习JSF2.x。OP在显示与jsf 1.x兼容的代码片段时,在问题上添加了
[jsf-2]
标记,这确实不是一个好迹象。这些在jsf 1.x中并不存在。它在
faces config.xml
中使用了
。在f:ajax中使用immediate的目的是什么?在我的测试中,它没有跳过验证。
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;
    }

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