[英]Binding request parameters with underscores in Spring MVC 3.0
考虑以下要求:请求参数必须使用 Spring MVC 3.0 绑定到对象。 请求参数包含下划线(例如http://myurl:80/x?param_one=1¶m_two=2
)。 这些参数应绑定到以下 object:
class MyObject {
private Integer paramOne;
private Integer paramTwo;
...
}
您 go 会怎么做?
重要提示:考虑到可能有大量这样的参数和对象,并且在包含下划线的对象上定义 setter 方法被认为不是好的做法。
Rajith的答案特别针对控制器方法,并没有解决您最初询问如何将下划线参数绑定到对象的问题。
我目前所拥有的hacky解决方案是完成您实际要求的是以这种方式命名我的二传手:
public void setProject_ids(List<Long> project_ids) {
请注意,RequestParam不能应用于方法,并且在应用于此setter的参数时不起作用。
您可以使用@RequestMapping
属性执行此操作
@RequestParam(value = "param_One") String paramOne,@RequestParam(value = "param_two") String paramTwo
将其添加到方法签名中
但是对于最佳实践,最好传递相同的变量名称
九年后......我更干净的解决方案是使用构造函数注入并用@ConstructorProperties
注释它。 这样您就可以保持 class 不变并使用 Java 命名约定。
@Value
class MyObject {
Integer paramOne;
Integer paramTwo;
@ConstructorProperties({"param_one", "param_two"})
MyObject(Integer paramOne, Integer paramTwo) {
this.paramOne = paramOne;
this.paramTwo = paramTwo;
}
即使你有一个很长的字段列表,你也可以生成构造函数,只需要写注解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.