2012-11-06 77 views
5

请考虑以下要求:请求参数必须绑定到使用Spring MVC 3.0的对象。请求参数包含下划线(例如http://myurl:80/x?param_one=1&param_two=2)。这些参数应绑定到以下对象:在Spring MVC 3.0中绑定具有下划线的请求参数

class MyObject { 
    private Integer paramOne; 
    private Integer paramTwo; 

    ... 
} 

你会怎么做呢?

重要提示:认为有可能的参数和对象这样的大量的,它不是好的做法,以确定对包括下划线的对象setter方法。

+1

我对这个问题添加了一个答案,你可以在下面看到。你是否最终找到了比我提供的更优雅的解决方案?我自己喜欢更好的解决方案。 –

回答

1

你可以做到这一点使用@RequestMapping属性

@RequestParam(value = "param_One") String paramOne,@RequestParam(value = "param_two") String paramTwo 

一下添加到方法签名

但最佳实践其更好地通过相同的变量名

+4

尽管我很欣赏这个答案,但请记住,在我提到的问题的底部:*还要考虑可能存在大量参数和像这样的对象*。在这种情况下,'@ RequestParam'是不可行的,因为它意味着控制器方法签名有超过20个参数。 – tmbrggmn

2

Rajith的答案是对的控制器方法特别是,并没有解决你最初的问题,如何将下划线参数绑定到一个对象。

的哈克解决方案,我目前在地方来完成你实际上问的是说出我制定者在这种风格:

public void setProject_ids(List<Long> project_ids) { 

注意RequestParam不能应用到方法,它没有当应用于此setter的参数时会产生效果。