Jac*_*ack 5 java spring spring-mvc
我有一个方法如下,{code} 应该只接受 A、B 或 C。
我知道解决这个问题的一种方法是定义三种方法(每种情况一个),但这不是一种有效的方法。另一种方法是使用包含 switch case 的单一方法,但是有没有更好的方法呢?
@RequestMapping(value = "{code}/selection", method = RequestMethod.GET)
public String showSelectionOptions(@PathVariable String code){
switch(code){
case A:
case B:
case C:
return "selection";
default:
return "error";
}
Run Code Online (Sandbox Code Playgroud)
Spring MVC 有更直接的解决方案来满足您的需求。尝试
@RequestMapping(value = "{code:A|B|C}/selection", method = RequestMethod.GET)
public String showSelectionOptions(@PathVariable String code){
return "selection";
}
Run Code Online (Sandbox Code Playgroud)
我认为你的方法看起来不错。我唯一的建议是,如果您不想将 {code} 作为 URL 参数传递,而是作为请求正文的一部分传递,那么您可以使用而不是将@RequestBody请求@PathVariable正文映射到 DTO 类。您可以使用@validated它来验证所提供的至少一个值 {code} 。
但话虽如此,我不认为你的方法有什么问题。
| 归档时间: |
|
| 查看次数: |
2359 次 |
| 最近记录: |