Java Spring MVC 3.0中带下划线的绑定请求参数

Java Spring MVC 3.0中带下划线的绑定请求参数,java,spring,spring-mvc,data-binding,Java,Spring,Spring Mvc,Data Binding,考虑以下要求:必须使用SpringMVC3.0将请求参数绑定到对象。请求参数包含下划线(例如http://myurl:80/x?param_one=1¶m_two=2)。这些参数应绑定到以下对象: class MyObject { private Integer paramOne; private Integer paramTwo; ... } 你打算怎么做 重要注意事项:认为可能有大量的参数和对象,并且认为在包含下划线的对象上定义SETER方法是不好的做法

考虑以下要求:必须使用SpringMVC3.0将请求参数绑定到对象。请求参数包含下划线(例如
http://myurl:80/x?param_one=1¶m_two=2
)。这些参数应绑定到以下对象:

class MyObject {
    private Integer paramOne;
    private Integer paramTwo;

    ...
}
你打算怎么做


<强>重要注意事项:认为可能有大量的参数和对象,并且认为在包含下划线的对象上定义SETER方法是不好的做法。

< P>可以使用<代码> @请求映射< /COD>属性

@RequestParam(value = "param_One") String paramOne,@RequestParam(value = "param_two") String paramTwo
将此添加到方法签名中


但为了获得最佳实践,最好传递相同的变量名

Rajith的答案是专门针对控制器方法的,并没有解决您最初提出的如何将下划线参数绑定到对象的问题

我目前采用的黑客解决方案是实现您实际要求的目标,即以以下方式命名我的setter:

public void setProject_ids(List<Long> project_ids) {
public void设置项目标识(列出项目标识){

注意,RealestPARAM不能应用于方法,当应用到SETTER的参数时,它不起作用。

虽然我很欣赏这个答案,但请记住,在我所陈述的问题的底部,也考虑到可能有大量的参数和对象,例如:<代码> @ RequestParam >代码>是UNFEA。在这种情况下,这是可能的,因为这意味着控制器方法签名有20多个参数。我为这个问题添加了一个答案,你可以在下面看到。你最终找到了比我提供的更优雅的解决方案吗?我自己也希望有更好的解决方案。