由于我是JSF框架的新手,想知道如何将用户输入的数据添加到数据库中。 更清楚的是,我正在使用jsf和jsp,我的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>
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 );
}
}
答案 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
方法中的所有参数都会自动显示,您无需从参数图中获取这些参数。