使用jsf将用户输入的数据添加到数据库

时间:2011-05-05 10:03:55

标签: jsf-2

由于我是JSF框架的新手,想知道如何将用户输入的数据添加到数据库中。 更清楚的是,我正在使用jsf和jsp,我的jsp包含一些输入字段和一个提交按钮。我如何捕获所有用户输入的数据并将其作为按钮的输入参数发送,因为我的后端将所有这些作为输入参数并用新记录更新表。

请查看我的代码,让我知道我的错误

Registration.jsp

<body>
 <f:view>
  <h:form>
           <h:panelGrid columns="2" rules="all" width="100%" style="background:#03547C;color:#FDD017">
                <h:column>
                    <h:outputText value="Stu No : "></h:outputText>
                    <h:inputText value="#{RegBean.stuNo}"/>
                </h:column>
                <h:column>
                    <h:outputText value="Stu Name : "></h:outputText>
                    <h:inputText value="#{RegBean.stuName}"/>
                </h:column>
                 <h:column>
                      <h:outputText value="Standard : "></h:outputText>
                      <h:inputText value="#{RegBean.standard}" />
                 </h:column>
                 <h:column>
                       <h:outputText value="School : "></h:outputText>
                       <h:inputText value="#{RegBean.school}" />
                 </h:column>
            </h:panelGrid>
            <h:panelGrid columns="2" rules="all" width="100%" style="background:#03547C;color:#FDD017">
                <h:column>
                    <h:form>
                        <h:commandButton id="submitBtn" value="Submit" action="#{RegBean.submitDetails}">
                            <f:param name="sNo" value="#{RegBean.stuNo}" />
                            <f:param name="sName" value="#{RegBean.stuName}" />
                            <f:param name="std" value="#{RegBean.standard}" />
                            <f:param name="schl" value="#{RegBean.school}" />
                        </h:commandButton>
                    </h:form>
                </h:column>
            </h:panelGrid>
        </h:form>
    </f:view>
</body>

注册Bean

public class VendorRegBean {
private String stuNo;
private String stuName;
private String standard;
private String school;

  // getters and setters

    public void submitDetails() {
    Map requestMap = context.getExternalContext().getRequestParameterMap();
      String stNo = (String) requestMap.get("sNo");
      String stName = (String) requestMap.get("sName");
      String stndrd = (String) requestMap.get("std");
      String scl = (String) requestMap.get("schl");
    vReg.stuRegistration(stNo ,stName ,stndrd ,scl );        
}

}

1 个答案:

答案 0 :(得分:1)

只要将bean注册为托管bean并为bean成员提供getter和setter方法,就不需要从请求参数映射中获取参数。

使用bean的注释将其声明为托管bean。为stuNo成员提供了getter和setter示例:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

    @ManagedBean
    @SessionScoped
    public class RegBean {
      private String stuNo;
      ...


      private String getStuNo() {
        return stuNo;
      }

      private String setStuNo(String stuNo) {
        this.stuNod = stuNo;
      }
    }

在视图中,您必须使用首字母小写引用托管bean,例如:

<h:inputText value="#{regBean.stuNo}"/>

您的命令按钮不需要<f:param>,只需使用:

<h:commandButton id="submitBtn" value="Submit" action="#{regBean.submitDetails}"/>

然后,您的submitDetails方法中的所有参数都会自动显示,您无需从参数图中获取这些参数。