`
streammoon
  • 浏览: 25197 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

dwr提交同名input

阅读更多
首先说明:以我个人的测试结果来看, 同名的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弹出failed to read input等错误框,修改DWR源码后可以避免。本次上传的资源供大家参考,如果在使用中遇到任何问题,欢迎大家及时交流,希望对大家能有所帮助

    Dwr 表单提交 时间类型

    标题 "Dwr 表单提交 时间类型" 涉及的是Direct Web Remoting (DWR)框架中的一个关键概念,即如何处理表单提交时的时间数据类型。DWR是一种允许JavaScript与服务器端Java代码进行交互的技术,使得Web应用能够实现动态...

    DWR集合Spring实现异步提交

    **DWR(Direct Web Remoting)集合Spring实现异步提交** DWR(Direct Web Remoting)是一种开源JavaScript库,它允许Web应用程序在客户端与服务器之间进行实时、双向通信,从而实现异步数据交换。结合Spring框架,...

    dwr dwrdwr

    dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr

    DWR中文文档DWR

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行直接的交互,从而实现在Web应用程序中的Ajax功能。DWR的主要目标是简化前后端的数据交换,提高用户体验,使得Web应用能够像桌面...

    dwr笔记 dwr自学资料

    DWR (Direct Web Remoting) 是一种开源Java技术,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用服务器端的Java方法,极大地简化了客户端和服务器端的数据交换。本笔记将...

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet-name&gt;dwr-invoker org.directwebremoting.servlet.DwrServlet &lt;init-param&gt; &lt;param-name&gt;debug&lt;/param-name&gt; ...

    dwr demo dwr简单使用

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。DWR简化了AJAX(Asynchronous JavaScript and XML)的开发,使得开发者可以像调用...

    dwr实现ajax功能ajax+dwr

    **DWR(Direct Web Remoting)**是一种Java技术,它允许Web应用程序在客户端与服务器之间进行实时通信,而无需刷新整个页面。通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous ...

    DWR的学习资料,DWR学习必备

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的JavaScript到服务器端Java对象的通信。这个技术允许开发者在浏览器中直接调用服务器端的方法,极大地简化了AJAX(Asynchronous JavaScript ...

    dwr1+dwr2+dwr3 jar包

    这个压缩包包含了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...

    DWR电子表单

    DWR电子表单是利用DWR技术构建的一种交互式、动态的Web表单,它可以极大地提升用户体验,使用户能够在不离开当前页面的情况下提交数据、获取服务器反馈,并进行实时更新。 在DWR电子表单中,用户可以直接在浏览器上...

    DWR配置文件详解,DWR配置

    **DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...

    dwr2.0 dwr3.0 jar包

    DWR(Direct Web Remoting)是一个开源的Java库,它为Web应用程序提供了强大的Ajax功能。通过DWR,前端JavaScript可以直接调用后端Java方法,从而实现动态、实时的Web交互,提升用户体验。这个主题主要围绕DWR的两个...

    dwr.jar 以及dwr配置文件

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许在JavaScript和服务器端Java之间进行双向通信,实现Web应用程序的Ajax功能。DWR使得动态网页能够与后台服务器进行实时交互,无需刷新整个页面,提高了用户体验...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    这个压缩包包含了DWR的三个关键组件:DWR3.0.jar,DWR的实例war文件,以及DWR2.0的中文说明文档。以下是关于这些组件的详细知识: 1. **DWR3.0.jar**: DWR3.0.jar是DWR框架的核心库,包含所有必需的类和接口,...

    DWR 教程 中文API DWR.xml配置文件说明 DWR学习笔记

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java代码之间的双向通信。这个教程包含了一系列的文档和资源,帮助开发者深入理解和使用DWR。 首先,"DWR学习笔记"提供了对...

    DWR中文文档 (DWR 2.0)

    ### DWR中文文档知识点概述 #### 一、DWR简介 **DWR(Direct Web Remoting)** 是一个开源的类库,旨在帮助开发者轻松构建包含AJAX技术的网站。其核心价值在于允许浏览器中的JavaScript代码能够直接调用运行在Web...

    dwr所需要的jar包

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时通信,无需使用插件或复杂的JavaScript框架。DWR简化了AJAX(Asynchronous JavaScript and XML)开发,使开发者可以像...

Global site tag (gtag.js) - Google Analytics