`
zhangwei_david
  • 浏览: 474802 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring mvc 中提交List表单

 
阅读更多

     在项目中有这样一个需要,在配置管理页面中允许用户动态添加key-value的键值对;也就是说,用户最终提交的表单中包含多少个键值对是无法预期的;这样我们就需要一个动态的表单提交的一个list对象。

      前端代码如下:

<div id="frame-main">
<div id="frame-content">
<h2>国际汇款配置新增</h2>
<div>
<form id="configAddForm" action="$remitModule.setTarget('remitConfigAdd.htm')" method="post">
#set($f = $formManager.newForm($request))
#addFormToken($f)
<div class="tb-table">
配置项:<input type="text" id="paramKey" name="paramKey" />
<table>
<thead>
<tr>
<th>KEY</th>
<th>VALUE</th>
<th>操作</th>
<tr>
</thead>
<tbody id="config_tb">
<tr>
<td>
<input class="key" name="paramValue[0].key"/>
</td>
<td>
<input class="value" name="paramValue[0].value"/>
</td>
<td>

</td>
</tr>
</tbody>
</table>
</div>
<form>
</div>
<div class="tb-tfoot">

<span class="btn"><input type="button" value="增 加" id="btn-add"></span>
<span class="btn"><input type="button" value="提 交" id="btn-submit"></span>

</div>
#if($errorMsg)
<div class="frame-content">
<h3>错误消息</h3>
<p class="error_Msg">$!errorMsg</p>
</div>
#end

</div>
</div>

<script type="text/javascript">
seajs.use("$",function(J){
J("#btn-add").click(function(e){
var _len = J("#config_tb tr").length;
J("#config_tb").append("<tr id=\""+_len+"\"><td><input class=\"key\" name=\"paramValue["+_len+"].key\" /></td><td><input class=\"value\" name=\"paramValue["+_len+"].value\"/></td><td><input type=\"button\" onclick=\"deltr(event)\" value=\"删除\"/></td></tr>");
});

J("#btn-submit").click(function(e){
var allowSub = true;
var _paramKey=J("#paramKey").val();
if(_paramKey==""){
alert("请正确填写配置数据");
J("#paramKey").addClass("errorText");
allowSub = false;
}
J("#configAddForm").submit();
});
window.deltr = function(event){
J(event.target).parents("tr").remove();//删除当前行
J("#config_tb tr").each(function(i){
J(this).find('input[name^=paramValue]').each(function(j){
J(this).attr('name', 'paramValue['+i+'].'+(j==0? "key":"value"));
})
})
}

})
</script>

 


/**
 * 配置表单
 * @author Zhangwei
 * @version $Id: RemitConfigForm.java, v 0.1 2014年8月5日 下午6:01:36 Zhangwei Exp $
 */
public class RemitConfigForm {

    private List<ParamModel> paramValue;

    /**
     * Getter method for property <tt>paramValue</tt>.
     * 
     * @return property value of paramValue
     */
    public List<ParamModel> getParamValue() {
        return paramValue;
    }

    /**
     * Setter method for property <tt>paramValue</tt>.
     * 
     * @param paramValue value to be assigned to property paramValue
     */
    public void setParamValue(List<ParamModel> paramValue) {
        this.paramValue = paramValue;
    }

}


/**
 * 
 * @author Zhangwei
 * @version $Id: ParamModel.java, v 0.1 2014年8月5日 下午6:02:30 Zhangwei Exp $
 */
public class ParamModel implements Serializable {

    /**  */
    private static final long serialVersionUID = 1L;

    private String            key;

    private String            value;

    /**
     * Getter method for property <tt>key</tt>.
     * 
     * @return property value of key
     */
    public String getKey() {
        return key;
    }

    /**
     * Setter method for property <tt>key</tt>.
     * 
     * @param key value to be assigned to property key
     */
    public void setKey(String key) {
        this.key = key;
    }

    /**
     * Getter method for property <tt>value</tt>.
     * 
     * @return property value of value
     */
    public String getValue() {
        return value;
    }

    /**
     * Setter method for property <tt>value</tt>.
     * 
     * @param value value to be assigned to property value
     */
    public void setValue(String value) {
        this.value = value;
    }

    /** 
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "ParamModel [key=" + key + ", value=" + value + "]";
    }

}

 

         

 @RequestMapping(value = "/remitConfigAdd.htm", method = RequestMethod.POST)
    @Form
    public String submitConfig(RemitConfigForm form) {
        if (logger.isInfoEnabled()) {
            logger.info(ToStringBuilder.reflectionToString(form));
        }

        return RemitBusinessConstants.REMIT_CONFIG_ADD;
    }

 

结果是:

2014-08-05 18:13:32,368 [//10.64.77.25/ - /remit/remitConfigAdd.htm] INFO  remit.RemitConfigController - com.alipay.overseamng.web.remit.form.RemitConfigForm@124f5739[paramValue=[com.alipay.overseamng.web.remit.model.ParamModel@16e76893, com.alipay.overseamng.web.remit.model.ParamModel@328296a4]]
2014-08-05 18:17:39,942 [//10.64.77.25/ - /remit/remitConfigAdd.htm] INFO  remit.RemitConfigController - com.alipay.overseamng.web.remit.form.RemitConfigForm@149f7d63[paramValue=[ParamModel [key=aaa, value=aaaa], ParamModel [key=bbb, value=ccc], ParamModel [key=ddd, value=aaa,bbb,ccc,ddd]]]
2014-08-05 18:37:40,215 [//10.64.77.25/ - /remit/remitConfigAdd.htm] INFO  remit.RemitConfigController - com.alipay.overseamng.web.remit.form.RemitConfigForm@36519d[paramValue=[ParamModel [key=aaa, value=aaaa], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=aa, value=bbb], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=], ParamModel [key=, value=]]]

 

分享到:
评论

相关推荐

    学习Spring MVC,关于注解的Spring MVC,简单例子,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例

    另外,Spring MVC还提供了许多其他注解,如`@RequestParam`用于从请求参数中获取值,`@ModelAttribute`用于绑定表单数据到模型对象,`@ResponseBody`用于直接将方法返回值转换为HTTP响应体等。 学习Spring时,了解...

    spring MVC数据绑定大全

    例如,当表单提交的数据包含`username`和`password`字段时,可以在控制器方法中声明对应类型的参数,Spring MVC会自动将这些值填充到对应的参数中。 ```java @RequestMapping(value = "/login", method = Request...

    spring mvc 封装list到后台 SpringMVC_Multi_Row

    当用户提交表单时,Spring MVC会自动解析这些参数并填充到User对象列表中。 标签“源码”可能意味着博客作者深入解析了Spring MVC处理这种请求的内部机制,包括ModelAttribute的工作原理以及Spring MVC如何解析请求...

    spring mvc 注解例子

    在本文中,我们将深入探讨Spring MVC中的注解用法,并以文章"spring mvc 注解实现"为例进行说明。 首先,`@Controller` 是Spring MVC中定义控制器的基本注解。当标记在一个类上时,表明该类是一个处理HTTP请求的...

    [Spring MVC] -简单表单提交实例

    在Spring MVC框架中,表单提交是Web应用中常见的用户交互方式。本篇文章将深入探讨一个简单的表单提交实例,帮助开发者理解如何在Spring MVC环境中处理表单数据。 首先,我们来看User模型类,它是表单数据的载体。...

    Spring MVC 学习笔记 十一 data binding

    在Web开发中,Spring MVC框架为我们提供了一种高效的数据绑定机制,使得控制器(Controller)能够方便地将用户提交的表单数据与Java对象进行映射,简化了处理HTTP请求和响应的过程。本学习笔记将深入探讨Spring MVC...

    spring mvc注解方式

    在Spring MVC框架中,注解方式的使用极大地简化了Web应用程序的开发,使得开发者无需编写大量的XML配置文件,即可实现控制器、模型、视图以及数据访问的绑定。结合MyBatis,一个轻量级的持久层框架,可以构建高效、...

    SpringMVC使用Validation验证表单

    在Spring MVC框架中,表单验证是一个至关重要的环节,它确保了从客户端提交的数据符合预设的业务规则,从而防止因无效数据导致的错误或安全问题。Validation是Java世界中用于对象验证的标准API,通常与Hibernate ...

    spring mvc

    在Spring MVC中,M代表模型(Model),V代表视图(View),C代表控制器(Controller)。这种架构将业务逻辑、用户界面和控制流程分离,使得代码更加清晰和易于维护。 - **模型(Model)**:负责处理数据和业务逻辑...

    spring mvc 文档

    `User`类是表单绑定的对象,用于接收表单中的数据。 #### 四、Spring控制器与标签 Spring MVC提供了丰富的控制器类和自定义标签,使得Web开发更加高效和方便。 ##### 4.1 SimpleFormController ...

    Spring MVC+Spring+Hibernate实现简单的增删查改

    Spring MVC、Spring 和 Hibernate 是Java开发中常用的三大框架,它们分别负责不同的职责,共同构建了一个高效、灵活的企业级应用架构。本教程将详细介绍如何整合这三个框架来实现一个基础的增删查改(CRUD)功能,这...

    spring mvc实现Oracle分页

    在IT行业中,Spring MVC是一个广泛使用的Java Web框架,它提供了模型-视图-控制器(MVC)模式,帮助开发者构建可维护性和可扩展性高的Web应用程序。本项目着重讲解如何在Spring MVC环境中,结合JDBC技术,实现对...

    spring mvc框架中接收前端传递的批量数据的两种超实用例子

    2. **后台接收**:在Spring MVC的Controller中,可以创建一个`User`类型的数组或`List&lt;User&gt;`来接收这些数据。例如: ```java @PostMapping("/bulkProcess") public ResponseEntity&lt;?&gt; processUsers(@Request...

    Spring MVC--3.请求参数

    Spring MVC还可以通过`@ModelAttribute`注解将请求参数绑定到模型属性,这在处理表单提交时非常有用。模型属性可以从请求参数、路径变量甚至其他模型属性中获取值。 6. **处理异常** 当请求参数不符合预期(如...

    一个完整的Spring MVC的CRUD操作实例

    在这个完整的Spring MVC CRUD操作实例中,我们将深入探讨如何使用Spring MVC实现创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据的基本功能。 首先,让我们从项目结构开始。一个典型的Spring MVC...

    Spring MVC例子

    在 Spring MVC 中,模型(Model)负责存储应用的数据,视图(View)用于呈现这些数据,控制器(Controller)处理用户请求并协调模型和视图。这种分层架构使得代码更易维护,职责明确,提高了开发效率。 首先,让...

    Spring MVC的常用注解

    在Spring MVC中,注解的使用极大地简化了配置,使得开发更加高效和简洁。下面我们将深入探讨Spring MVC中的一些关键注解及其用法。 1. `@Controller`:这个注解用于标记一个类作为Spring MVC的控制器。控制器类负责...

    spring mvc step by step

    - 在`src/main/webapp/WEB-INF`目录下的`web.xml`文件中配置Spring MVC的DispatcherServlet。 - 示例代码: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...

    spring mvc校验

    在Spring MVC框架中,数据校验是一个至关重要的环节,它确保了输入的数据符合业务规则,降低了因错误数据引发的问题。这篇博文"spring mvc校验"可能深入探讨了如何在Spring MVC项目中实现有效的数据验证。 首先,...

    spring mvc 初始环境搭建,前后台数据的交互,文件上传

    - **添加Spring MVC支持**:在项目设置中添加Spring MVC的支持。 - **引入依赖库**:在项目的`pom.xml`或`build.gradle`文件中引入Spring MVC及其相关依赖库。 **3. 引入依赖库** 在项目的构建脚本中添加以下...

Global site tag (gtag.js) - Google Analytics