我对spring绑定参数有一些问题。
在我的场景中,我想要一个只接受一个查询参数'q'的控制器方法:
@Controller
@RequestMapping("/home")
public class HomeController {
@RequestMapping
public void test(@RequestParam(value = "q") final String q) {
System.out.println("> " + q);
}
}
现在,如果我按照我的规范发送有效请求:
GET /home?q=cat
我得到预期的输出:
> cat
如果我发送的请求在我的规范中无效,但仍然作为http请求有效:
GET /home?q=cat&q=black
我得到了模糊和意想不到的结果(我知道为什么春天这样做...数组绑定等:)但它仍然是一个惊喜。):
> cat,black
我不能使用那些参数,它们可能无效。 但我没有简单的方法来验证请求。
答案 0 :(得分:1)
将参数定义为List<String>
并断言它只有一个项目。
@RequestMapping
public void test(@RequestParam(value = "q") final List<String> q) {
if (q.size() > 1) {
throw new IllegalArgumentException("Multiple 'q' parameters are not allowed.");
}
System.out.println("> " + q);
}