首先说明:以我个人的测试结果来看, 同名的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源码后可以避免。本次上传的资源供大家参考,如果在使用中遇到任何问题,欢迎大家及时交流,希望对大家能有所帮助
标题 "Dwr 表单提交 时间类型" 涉及的是Direct Web Remoting (DWR)框架中的一个关键概念,即如何处理表单提交时的时间数据类型。DWR是一种允许JavaScript与服务器端Java代码进行交互的技术,使得Web应用能够实现动态...
**DWR(Direct Web Remoting)集合Spring实现异步提交** DWR(Direct Web Remoting)是一种开源JavaScript库,它允许Web应用程序在客户端与服务器之间进行实时、双向通信,从而实现异步数据交换。结合Spring框架,...
dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行直接的交互,从而实现在Web应用程序中的Ajax功能。DWR的主要目标是简化前后端的数据交换,提高用户体验,使得Web应用能够像桌面...
DWR (Direct Web Remoting) 是一种开源Java技术,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用服务器端的Java方法,极大地简化了客户端和服务器端的数据交换。本笔记将...
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> ...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。DWR简化了AJAX(Asynchronous JavaScript and XML)的开发,使得开发者可以像调用...
**DWR(Direct Web Remoting)**是一种Java技术,它允许Web应用程序在客户端与服务器之间进行实时通信,而无需刷新整个页面。通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous ...
DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的JavaScript到服务器端Java对象的通信。这个技术允许开发者在浏览器中直接调用服务器端的方法,极大地简化了AJAX(Asynchronous JavaScript ...
这个压缩包包含了DWR的三个主要版本:DWR1.0、DWR2.0和DWR3.0的jar包,这些jar包是运行DWR应用的核心组件。 DWR1.0: DWR1.0是DWR项目的早期版本,主要目标是简化Web应用中的异步通信。在这个版本中,DWR提供了一个...
Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr...
DWR电子表单是利用DWR技术构建的一种交互式、动态的Web表单,它可以极大地提升用户体验,使用户能够在不离开当前页面的情况下提交数据、获取服务器反馈,并进行实时更新。 在DWR电子表单中,用户可以直接在浏览器上...
Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时、安全的双向通信,有效地打破了JavaScript和Java之间的壁垒。这个技术在2005年推出,主要解决了AJAX(异步JavaScript...
**DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...
该示例资源主要解决如下两个问题,其一就是解决SpringBoot集成DWR3.0.2-RELEASE版本,无配置文件快速简洁完成集成工作,省去dwr.xml等DWR框架初始化需要的配置文件;其二就是解决了集成后的SpringBoot项目在开发环境...
DWR(Direct Web Remoting)是一个开源的Java库,它为Web应用程序提供了强大的Ajax功能。通过DWR,前端JavaScript可以直接调用后端Java方法,从而实现动态、实时的Web交互,提升用户体验。这个主题主要围绕DWR的两个...
Direct Web Remoting (DWR) 是一个开源的Java库,它允许在JavaScript和服务器端Java之间进行双向通信,实现Web应用程序的Ajax功能。DWR使得动态网页能够与后台服务器进行实时交互,无需刷新整个页面,提高了用户体验...
这个压缩包包含了DWR的三个关键组件:DWR3.0.jar,DWR的实例war文件,以及DWR2.0的中文说明文档。以下是关于这些组件的详细知识: 1. **DWR3.0.jar**: DWR3.0.jar是DWR框架的核心库,包含所有必需的类和接口,...
DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java代码之间的双向通信。这个教程包含了一系列的文档和资源,帮助开发者深入理解和使用DWR。 首先,"DWR学习笔记"提供了对...