我有一个简单的@RestController
,并希望创建一个包含GET
查询中任何值的请求对象。
此外,我希望使用与get查询参数名称不同的变量名称。
@RestController
public class MyServlet {
@RequestMapping(value = "/start")
public String start(@Valid MyRequest req) {
Logger.log("IN");
return req.getTest();
}
}
public class MyRequest {
@XmlElement(name = "asd")
private String test;
//getter, setter
}
请求:localhost:8080/start?asd=imhere
结果:我正在查看日志语句IN
,因此servlet正常工作。
但是req
参数为空。为什么呢?
如果我发送以下网址,则有效:localhost:8080/start?test=imhere
所以servlet可以工作,但不能重命名参数。
答案 0 :(得分:0)
Spring将尝试使用setter构建您的MyRequest
对象或反映私有变量,因此只有在您发送test
参数时才会填充test
变量。
来自documentation (@RequestMapping - Supported method argument types):
将请求参数绑定到bean属性的命令或表单对象 (通过设定者)或直接到字段...
编辑 - 如果您想更改名称,您可能需要转换器。参见: