如何实现将JS动态添加的TR中的值传到后台中并批量插入
2013-09-17 18:01
507 查看
在我的上一篇文章当中,已经在静态页面中实现了JS动态添加删除TR。在实际工作中,更多的是需要将JS所添加的tr中的值保存至数据库中。下面我将介绍在SSH框架中如何实现这一功能需求。(以下均由我所做的实际项目给出功能代码)
在JSP中,JS代码会稍有变化。
我用的是struts1,输入框的代码是这样写的:
但是在添加tr中的代码只能用普通标签,而不能用struts标签,否则会报错。具体原因我没有深究,希望有知道的告知则个。
JS中的item、desc_comm等属性的值并不需要再刻意赋值至form表单中,因为,这个addItem()本身就是在form表单中调用的,因此新添加的tr也就在form表单中。
在后台接收的代码如下:
因为同一个property会对应多个值,因此,接收的时候得用String数组。这样,使用一个for循环就可以将前台的数据set至对应的属性中就OK了。
之前觉得这挺难的,后来发现其实也就这么一回事。另外,我做的这个功能还涉及到多表插入以及多表查询结果集显示的问题。待我完善了再总结出来。
在JSP中,JS代码会稍有变化。
function addItem() { var tr = document.getElementById("table_name").insertRow(3); for(var i = 0;i<7;i++){ var td = "td"+i; td = tr.insertCell(); td.width="13%"; td.className = "edit_content_text"; if(i==0){ td.innerHTML = "<input type='text' name='item' />"; }else if(i == 1){ td.innerHTML = "<input type='text' name='desc_comm' />"; }else if(i == 2){ td.innerHTML = "<input type='text' name='pack' />"; }else if(i == 3){ td.innerHTML = "<input type='text' name='ctns' />"; }else if(i == 4){ td.innerHTML = "<input type='text' name='qty' />"; }else if(i == 5){ td.innerHTML = "<input type='text' name='us_lb' />"; }else if(i == 6){ td.innerHTML = "<input type='text' name='amount' />"; } } }
我用的是struts1,输入框的代码是这样写的:
<html:text property="item" styleClass="input_text" maxlength="20"/>
但是在添加tr中的代码只能用普通标签,而不能用struts标签,否则会报错。具体原因我没有深究,希望有知道的告知则个。
JS中的item、desc_comm等属性的值并不需要再刻意赋值至form表单中,因为,这个addItem()本身就是在form表单中调用的,因此新添加的tr也就在form表单中。
在后台接收的代码如下:
String[] item = request.getParameterValues("item"); String[] desc_comm = request.getParameterValues("desc_comm"); String[] pack = request.getParameterValues("pack"); String[] ctns = request.getParameterValues("ctns"); String[] qty = request.getParameterValues("qty"); String[] us_lb = request.getParameterValues("us_lb"); String[] amount = request.getParameterValues("amount");
因为同一个property会对应多个值,因此,接收的时候得用String数组。这样,使用一个for循环就可以将前台的数据set至对应的属性中就OK了。
int length = item.length; for(int j = 0;j<length;j++){ //每循环一次就要重新new一个对象。不然,只会添加一条数据 Item it = new Item(); it.setItem(item[j]); it.setDesc_comm(desc_comm[j]); it.setPack(pack[j]); it.setCtns(Integer.parseInt(ctns[j])); it.setQty(Integer.parseInt(qty[j])); it.setUs_lb(Integer.parseInt(us_lb[j])); it.setAmount(Integer.parseInt(amount[j])); it.setContract_id(contract_id); //调用Item的添加方法 itemService.addItem(it); }
之前觉得这挺难的,后来发现其实也就这么一回事。另外,我做的这个功能还涉及到多表插入以及多表查询结果集显示的问题。待我完善了再总结出来。
相关文章推荐
- 利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
- asp.net后台如何动态添加JS文件和css文件的引用
- JS动态添加Table的TR,TD实现方法
- 【实践】js 如何实现动态添加文本节点
- asp.net后台如何动态添加JS文件和css文件的引用
- asp.net后台动态添加JS文件和css文件的引用实现方法
- js实现前台动态添加文本框,后台获取文本框内容
- asp.net后台动态添加JS文件和css文件的引用实现方法
- js实现前台动态添加文本框,后台获取文本框内容
- JS实现动态添加和删除DIV
- JS把内容动态插入到DIV的实现方法
- 如何实现服务器端下页面动态添加JavaScript脚本
- JS动态添加的div点击跳转到另一页面实现代码
- 如何实现动态添加布局文件(避免 The specified child already has a parent的问题)
- JS实现下拉框的动态添加(附效果)
- 如何在dropdownlist动态添加item之后,如何设置其value值! /用JS控制服务端dropDownlist和textField的Readonly属性