struts如何一次提交多个表单 你可以再每个form里面有set一个参数,再action中取出来,根据你的set的参数,就可以判断是那个form,并且执行那个代码了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 能把所有的记录先保存到arraylist或hashmap中再通过数据库提交?如何实现呢? ///////////////需要把多条记录一次性插到数据库中,多条记录插入的是同一个表!///////////////用一个form就行了!!你在formbean里定义String[] name = null;String[] type = null;保存时取String[] 数组,循环插入就行了!!写多个form是一种绕道不可取的做法!而且你那样写行不能实现的,from还要写成不同的名,action跳转也要加设置 我也遇到了类似的问题,如果form bean里使用了数组,它的那些set ,get 方法还是一样的用吗?比如说它的某个public void setName(String username){//...}JSP中<html:text property="name"> 的name 与setName怎么个对应? 而且如果这个formbean里的项目是动态变化的,即是说可能会根据需要添加name,type或删除指定name,type,这样的话又该怎么做?这样的话用String[] name = null;这样的数组行吗? 你可以再每个form里面有set一个参数,再action中取出来,根据你的set的参数,就可以判断是那个form,并且执行那个代码了<html:form method="post" action="testAction.do?XXXXX=XXX" > 在页面中定义元素数组不就可以了。在ACTION里面得到元素数组,或者取得整个FORM的ROWSET。你可以常识使用DAO或者DTO模式开发。 为什么不将所用的insert组成一个sql,然后通过一个form提交?你希望点一个button,就提交多个form吗,关注 在ActionForm中声明一个Map变量。public class MapForm extends ActionForm{private Map map = null;public void setMap(Map map) {this.map = map;}public Map getMap() {return this.map;}同时增加一个属性方法去设置和获取Map中的数据。public void setAttribute(String attributeKey, Object attributeValue){getMap().put(attributeKey, attributeValue);}public Object getAttribute(String attributeKey){Object keyValue = getMap().get(attributeKey);return keyValue;}这样我们在jsp页面中,我们就可以使用Struts的标签接触这些Map数据。<html:text property="attribute(key)"/>这样这些数据就可维护啦,这对查询条件较多的情况非常适用,你无需在维护这些查询信息在各个页面的过渡,Struts帮您完成了一切。下面我们就看一下如何用MapForm组织master/detail方式的数据,我们将以一个订单做为样例。1 首先建立一个Form对象,继承MapForm,同时声明主要的属性,如订单编码、定购人等。public class OrderForm extends MapForm{private Integer id;private String orderMan;2 我们拟定以Map方式保存采购项信息,同一采购项采用统一前缀,可选择行编码,如row123_ productCode,row123_ productId,row123_ amount等,这样某一采购项信息将被输入到Map中,不同的采购项的前缀不一样,前缀由row+行编码组成,同时编写可获取行编码的函数,这样可取得某一采购项的所有信息,参数rowPrefix为某一字符串,如“row”、“item”等,不包含数字编码信息,同时你可以编写Comparator,进行排序。 public Collection getRowIdList(String rowPrefix){if (map.isEmpty()) return new ArrayList();Collection allRowId = new TreeSet(new RowIdComparator(rowPrefix));Iterator allKey = map.keySet().iterator();while (allKey.hasNext()){String key = (String) allKey.next();if (key.indexOf(rowPrefix) != -1){key = key.substring(0, key.indexOf('_'));allRowId.add(key);}}return allRowId;}3 在jsp页面中你可以通过jstl,就可以完成采购明细的显示。<c:forEach var="rowId" items="${OrderForm.getRowIdList('row')}"><tr align="center" id="${rowId}" onclick="clickRow()"><td ><html:text property="attribute(${rowId}_productCode)" size="8" onkeydown="fillProductInfoWithKeyDown('${rowId}',this)" /><html:hidden property="attribute(${rowId}_productId)"/> <a href="javascript:selectproduct('${rowId}')">选择</a></td><td ><html:text property="attribute(${rowId}_productQty)" size="8" /> </td><td ><html:text property="attribute(${rowId}_productPrice)" size="8" /></td><td ><html:text property="attribute(${rowId}_productName)" readonly="true" size="16" /></td><td ><html:text property="attribute(${rowId}_productPackaging)" readonly="true" size="12"/></td><td ><html:text property="attribute(${rowId}_productUnit)" size="6" readonly="true" /></td></tr></c:forEach>4 这样Struts帮你完成了所有的信息处理,你需要完成你的保存就可以啦。提示:Map中的数据值默认都是String类型的,如果你想转换成你想要的类型,可以在你的Form编写一个工具方法,完成类型的转换。public Map getTypedMap() {Map map = this.getMap();String keyString = (String) map.get("key");Integer keyInteger = new Integer(keyString);map.put("key",keyInteger);return map;} to xuelei81(阿薛)因为急现在用了一种很笨的方法到时会参考你的方法改进1、Map 需要同步吗?2、如何添加到数据库中? 直接在form中将你的字段名字定义成数组,不要定义多个form,然后在Action中通过数组循环提交道数据库,而且在提交数据库时可以使用AddBatch语句来一次提交,不必多次提交 form可以嵌套form的,看一下struts文档就知道了元素名称<html:text property="OuterForm.InnerForm.element"/> 好像这样<html:text property="InnerForm.element"/> 对bo和po的一些问题 java调用linux命令带星号的问题 struts2中开发AJAX struts2 拦截器类的问题 tomcat6.0.18配置数据库池问题 求指教:struts2值栈问题 饼状图的画法 来者给分,不够再加 struts实现网站的导航效果 这道面试题让我折戟沉沙了 求大神们救救老弟啊,给点可行性建议,谢谢 jspsmartupload在struts的action类中怎么使用? 熟悉struct的朋友帮忙看看
需要把多条记录一次性插到数据库中,多条记录插入的是同一个表!
///////////////用一个form就行了!!你在formbean里定义
String[] name = null;
String[] type = null;保存时取String[] 数组,循环插入就行了!!写多个form是一种绕道不可取的做法!
而且你那样写行不能实现的,from还要写成不同的名,
action跳转也要加设置
比如说它的某个
public void setName(String username){
//...
}
JSP中<html:text property="name"> 的name 与setName怎么个对应?
在ACTION里面得到元素数组,或者取得整个FORM的ROWSET。
你可以常识使用DAO或者DTO模式开发。
public class MapForm extends ActionForm
{
private Map map = null;
public void setMap(Map map) {
this.map = map;
}
public Map getMap() {
return this.map;
}
同时增加一个属性方法去设置和获取Map中的数据。
public void setAttribute(String attributeKey, Object attributeValue)
{
getMap().put(attributeKey, attributeValue);
}
public Object getAttribute(String attributeKey)
{
Object keyValue = getMap().get(attributeKey);
return keyValue;
}
这样我们在jsp页面中,我们就可以使用Struts的标签接触这些Map数据。
<html:text property="attribute(key)"/>
这样这些数据就可维护啦,这对查询条件较多的情况非常适用,你无需在维护这些查询信息在各个页面的过渡,Struts帮您完成了一切。下面我们就看一下如何用MapForm组织master/detail方式的数据,我们将以一个订单做为样例。1 首先建立一个Form对象,继承MapForm,同时声明主要的属性,如订单编码、定购人等。
public class OrderForm extends MapForm
{
private Integer id;
private String orderMan;2 我们拟定以Map方式保存采购项信息,同一采购项采用统一前缀,可选择行编码,如row123_ productCode,row123_ productId,row123_ amount等,这样某一采购项信息将被输入到Map中,不同的采购项的前缀不一样,前缀由row+行编码组成,同时编写可获取行编码的函数,这样可取得某一采购项的所有信息,参数rowPrefix为某一字符串,如“row”、“item”等,不包含数字编码信息,同时你可以编写Comparator,进行排序。
public Collection getRowIdList(String rowPrefix)
{
if (map.isEmpty()) return new ArrayList();
Collection allRowId = new TreeSet(new RowIdComparator(rowPrefix));
Iterator allKey = map.keySet().iterator();
while (allKey.hasNext())
{
String key = (String) allKey.next();
if (key.indexOf(rowPrefix) != -1)
{
key = key.substring(0, key.indexOf('_'));
allRowId.add(key);
}
}
return allRowId;
}3 在jsp页面中你可以通过jstl,就可以完成采购明细的显示。
<c:forEach var="rowId" items="${OrderForm.getRowIdList('row')}">
<tr align="center" id="${rowId}" onclick="clickRow()">
<td ><html:text property="attribute(${rowId}_productCode)" size="8" onkeydown="fillProductInfoWithKeyDown('${rowId}',this)" /><html:hidden property="attribute(${rowId}_productId)"/> <a href="javascript:selectproduct('${rowId}')">选择</a></td>
<td ><html:text property="attribute(${rowId}_productQty)" size="8" /> </td>
<td ><html:text property="attribute(${rowId}_productPrice)" size="8" /></td>
<td ><html:text property="attribute(${rowId}_productName)" readonly="true" size="16" /></td>
<td ><html:text property="attribute(${rowId}_productPackaging)" readonly="true" size="12"/></td>
<td ><html:text property="attribute(${rowId}_productUnit)" size="6" readonly="true" /></td>
</tr>
</c:forEach>4 这样Struts帮你完成了所有的信息处理,你需要完成你的保存就可以啦。提示:Map中的数据值默认都是String类型的,如果你想转换成你想要的类型,可以在你的Form编写一个工具方法,完成类型的转换。
public Map getTypedMap() {
Map map = this.getMap();
String keyString = (String) map.get("key");
Integer keyInteger = new Integer(keyString);
map.put("key",keyInteger);
return map;
}
到时会参考你的方法改进1、Map 需要同步吗?
2、如何添加到数据库中?