首先说明:以我个人的测试结果来看, 同名的textbox不可能都将“键--值”对提交到后台去。如果是多个同名textbox(如下的name="text4"),只有第一个的“键-值”对会提交到后台去,后面的同名值不行。
form 表单如下:
<form name="form1" method="post">
<br>
test1:<input name="test1" /><br>
test2:<input name="test2" /><br>
test3:<input name="test3" /><br>
<br>
test4:<input id="t1" name="test4" /><br>
test4:<input id="t2" name="test4" /><br/>
test5:<input id="t51" /><br>
test5:<input id="t52" /><br/>
<input type="submit" value="submit" onclick="submitAllFormUseDwr();"><br/>
</form>
dwr操作script 如下:
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/dwrComment.js"></script>
。。。。。。。。
function submitAllFormUseDwr(){
var formMap = DWRUtil.getValues('form1');
dwrComment.dwrMethod3(formMap,myDwrRetRresult);
}
function myDwrRetRresult(data)
{
alert(data);
}
。。。。。。。。
对于名称为test4的textbox,提交到后台时,只能获取到一对值(即id="t1"的key-value)。对于id为t51 和 t52 的textbox 我原本也是想取同样的名称的。。。。
在查看dwr源码时(util.js)发现在dwr.util.getFormValues(。。)方法中有下面一段代码:
。。。。
if (ele[i].name) {
name = ele[i].name;
value = dwr.util.getValue(name);
}
else {
if (ele[i].id) name = ele[i].id;
else name = "element" + i;
value = dwr.util.getValue(ele[i]);
}
。。。。
没办法,只能去掉textbox中的name属性,只留一个id。这样到后台我就可以根据id来获取特使他的数据了。同样实现了类似多个同名元素提交的效果。
---------------------------------
在我的测试中,我的后台有两个javabean。
ChildBean1 bean1 = new ChildBean1();
ChildBean2 bean2 = new ChildBean2();
package com.my.dwr.po;
public class ChildBean1 {
private String test1="";
private String test2="";
private String test3="";
// getter & setter
}
package com.my.dwr.po;
/均为数组。。。
public class ChildBean2 {
private String[] test4;
private String[] test5;
private String[] test6;
// getter & setter
}
ChildBean2 就时要实现多个同名表单提交的。
对于ChildBean1的页面表单元素,采用name="",而ChildBean2 得页面表单元素不能有name属性。
后台action:
import ....
import org.apache.commons.beanutils.BeanUtils;
public class DwrAction {
public BeanClass dwrMethod3(Map formMap){
this.convert(formMap); //处理同名input(ChildBean2 )ChildBean2 中属性均为数组
BeanClass formBean = new BeanClass();
ChildBean1 bean1 = new ChildBean1();
System.out.println(formMap);
try {
BeanUtils.populate(bean1, formMap); //处理非同名属性的input。ChildBean1 中属性为普通属性。
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return formBean;
}
public void convert(Map m){
Set s = m.entrySet();
Iterator it = s.iterator();
ChildBean2 bbb = new ChildBean2();
List test1 = new ArrayList();
List test2 = new ArrayList();
while(it.hasNext()){
Map.Entry<String, String> mm = (Map.Entry<String, String>)it.next();
String key=mm.getKey();
String ks[]=key.split("_"); //我提交的textbox的ID格式为“XXX_数字"的方式
System.out.println(mm.getKey()+"-------"+mm.getValue());
if("test4".equals(ks[0])){
test1.add(mm.getValue());
}
if("test5".equals(ks[0])){
test2.add(mm.getValue());
}
}
System.out.println(test1+"===="+test2);
}
}
dwr。xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="dwrComment">
<param name="class" value="com.my.dwr.app.DwrAction"></param>
</create>
<convert match="com.my.dwr.po.BeanClass" converter="bean" javascript="BeanClass"></convert>
<convert match="com.my.dwr.po.ChildBean1" converter="bean" javascript="ChildBean1"></convert>
<convert match="com.my.dwr.po.ChildBean2" converter="bean" javascript="ChildBean2"></convert>
<convert match="java.lang.Objec" converter="bean"></convert>
</allow>
<signatures>
<![CDATA[
import java.util.Map;
import com.my.dwr.app.DwrAction;
import com.my.dwr.po.BeanClass;
import com.my.dwr.po.ChildBean1;
import java.lang.Object;
import java.lang.String;
DwrAction.dwrMethod3(Map<String,String> formMap);
]]>
</signatures>
</dwr>
==================================
分享到:
相关推荐
使用DWR弹出failed to read input等错误框,修改DWR源码后可以避免。本次上传的资源供大家参考,如果在使用中遇到任何问题,欢迎大家及时交流,希望对大家能有所帮助
NULL 博文链接:https://fireinjava.iteye.com/blog/458257
dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr
DWR集合Spring实现异步提交,值得下载的内容; 使用Strut 1.2,Hibernate 3.0,Spring 2.5 jar包自己导入
dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;
dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架
DWR中文文档DWR中文文档DWR中文文档DWR中文文档DWR中文文档
dwr中文文档dwr中文文档dwr中文文档dwr中文文档dwr中文文档dwr中文文档dwr中文文档
dwr源码
dwr笔记 dwr自学资料 dwr笔记 dwr自学资料 dwr笔记 dwr自学资料
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> ...
Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr...
DWR配置文件详解 DWR配置 DWR配置文件
DWR介绍DWR介绍DWR介绍DWR介绍DWR介绍DWR介绍
讲解DWR 框架的使用,和各种form表单Select-option,table
dwr填充表格示例dwr填充表格示例dwr填充表格示例
dwr2.0.6 dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6
dwr1.0版本 dwr2.0版本 dwr3.0版本的jar包
dwr分页源码,dwr分页源码 dwr分页源码,dwr分页源码
dwr 2.jar dwr 2.jar