luk*_*mir 165 java spring spring-mvc
Spring控制器是否可以处理这两种请求?
1) http://localhost:8080/submit/id/ID123432?logout=true
2) http://localhost:8080/submit/id/ID123432?name=sam&password=543432
如果我定义了这种类型的单个控制器:
@RequestMapping (value = "/submit/id/{id}", method = RequestMethod.GET,
produces="text/xml")
public String showLoginWindow(@PathVariable("id") String id,
@RequestParam(value = "logout", required = false) String logout,
@RequestParam("name") String username,
@RequestParam("password") String password,
@ModelAttribute("submitModel") SubmitModel model,
BindingResult errors) throws LoginException {...}
Run Code Online (Sandbox Code Playgroud)
不接受带有"注销"的HTTP请求.
如果我定义两个控制器来分别处理每个请求,Spring会抱怨异常"已经有'Controller'bean方法...已映射".
Sud*_*hul 207
你需要给required = false的name,并password请求参数也是如此.那是因为,当你只提供logout参数时,它实际上是期望的,name并且password它们仍然是强制性的.
当你刚给出时它起作用name,password因为已经给出了因为logout它不是一个强制参数.required = falselogout
dim*_*sli 156
作为Spring 4.1.1向前的一部分,您现在完全支持Java 8 Optional(原始票证),因此在您的示例中,只要您required=false使用Optional 替换3个params注销,名称,密码,两个请求都将通过您的单个映射端点:
@RequestMapping (value = "/submit/id/{id}", method = RequestMethod.GET,
produces="text/xml")
public String showLoginWindow(@PathVariable("id") String id,
@RequestParam(value = "logout") Optional<String> logout,
@RequestParam("name") Optional<String> username,
@RequestParam("password") Optional<String> password,
@ModelAttribute("submitModel") SubmitModel model,
BindingResult errors) throws LoginException {...}
Run Code Online (Sandbox Code Playgroud)
M. *_*num 38
创建2个处理案例的方法.您可以指示@RequestMapping注释在映射请求时考虑某些参数.这样你就可以很好地将它分成2种方法.
@RequestMapping (value="/submit/id/{id}", method=RequestMethod.GET,
produces="text/xml", params={"logout"})
public String handleLogout(@PathVariable("id") String id,
@RequestParam("logout") String logout) { ... }
@RequestMapping (value="/submit/id/{id}", method=RequestMethod.GET,
produces="text/xml", params={"name", "password"})
public String handleLogin(@PathVariable("id") String id, @RequestParam("name")
String username, @RequestParam("password") String password,
@ModelAttribute("submitModel") SubmitModel model, BindingResult errors)
throws LoginException {...}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
280499 次 |
| 最近记录: |