【发布时间】:2013-06-01 06:53:12
【问题描述】:
假设我有一个页面列出了表格上的对象,我需要放置一个表格来过滤表格。过滤器作为 Ajax GET 发送到这样的 URL:http://foo.com/system/controller/action?page=1&prop1=x&prop2=y&prop3=z
而不是在我的控制器上有很多参数,比如:
@RequestMapping(value = "/action")
public @ResponseBody List<MyObject> myAction(
@RequestParam(value = "page", required = false) int page,
@RequestParam(value = "prop1", required = false) String prop1,
@RequestParam(value = "prop2", required = false) String prop2,
@RequestParam(value = "prop3", required = false) String prop3) { ... }
假设我的 MyObject 为:
public class MyObject {
private String prop1;
private String prop2;
private String prop3;
//Getters and setters
...
}
我想做这样的事情:
@RequestMapping(value = "/action")
public @ResponseBody List<MyObject> myAction(
@RequestParam(value = "page", required = false) int page,
@RequestParam(value = "myObject", required = false) MyObject myObject,) { ... }
有可能吗? 我该怎么做?
【问题讨论】:
-
@michal +1。这里有几个教程展示了如何做到这一点:Spring 3 MVC: Handling Forms in Spring 3.0 MVC、What is and how to use
@ModelAttribute、Spring MVC Form Handling Example。只需谷歌“Spring MVC 表单处理”,您就会获得大量教程/示例。但一定要使用现代的表单处理方式,即 Spring v2.5+ -
从 MyObject 中删除 @RequestParam 并定义 MyObject 的属性(通过为所有属性添加无参数构造函数和设置器)或(定义一个没有无参数构造函数的全参数构造函数,在这种情况下不需要设置器)。
标签: java spring-mvc