Java Spring MVC 3.0中带下划线的绑定请求参数
考虑以下要求:必须使用SpringMVC3.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方法是不好的做法
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多个参数。我为这个问题添加了一个答案,你可以在下面看到。你最终找到了比我提供的更优雅的解决方案吗?我自己也希望有更好的解决方案。