@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String content(
@RequestParam int a,
@RequestParam String b,
...
@RequestParam String n;
) {
}
我可以以某种方式直接将所有@RequestParam
映射到java对象中,例如?
public class RestDTO {
private int a;
private String b;
private String n;
}
答案 0 :(得分:10)
在我看来,你有什么事可做。 内容方法将是这样的:
public String content(@RequestParam RestDTO restDTO){...}
休息DTO应该有正确的二传手。 当你这样做时发生了什么?
答案 1 :(得分:1)
如果遇到:
找不到匹配的编辑器或转换策略
可能是因为您在控制器方法中不必要地包含@RequestParam
。
确保作为请求参数接收的属性在目标对象上具有getter和setter(在本例中为请求参数a
,b
和n
):
public class RestDTO {
private int a;
private String b;
private String n;
public int getA() {return a;}
public void setA(int a) {this.a = a;}
public int getB() {return b;}
public void setB(int b) {this.b = b;}
public int getC() {return c;}
public void setC(int c) {this.c = c;}
}
将目标对象添加为控制器方法中的参数,但使用@RequestParam
进行不注释。将为每个匹配的请求参数调用目标对象的setter方法。
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String content(RestDTO restDto) {
}
答案 2 :(得分:-4)
方法:1 您需要将方法更改为POST,并且可以将DTO对象作为参数接收到控制器方法,如下所示。使用GET方法你无法实现它,因为GET不会有身体。
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String content( @RequestBody RestDto restDto) {
....
}
<强>的方法:2 强> 或者如果您仍想使用GET方法,则将构造函数添加到RestDto,如下所示
public RestDto {
public RestDto(int a, String b, String n){
this.a = a;
this.b = b;
this.n = n;
}
}
然后你的控制器会调用构造函数,如下所示:
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String content(
@RequestParam int a,
@RequestParam String b,
...
@RequestParam String n;
) {
RestDto restDto = new RestDto(a,b,n);
}