Java 在Spring4.2中,如何使path变量成为可选变量 @RequestMapping(value=“/return/{name}”,method=RequestMethod.GET) public ResponseEntity ReturnName(HttpServletRequest请求,@PathVariable(名称)字符串inputName){ 返回新的ResponseEntity(inputName,HttpStatus.OK) }
我找到了这样的解决方案Java 在Spring4.2中,如何使path变量成为可选变量 @RequestMapping(value=“/return/{name}”,method=RequestMethod.GET) public ResponseEntity ReturnName(HttpServletRequest请求,@PathVariable(名称)字符串inputName){ 返回新的ResponseEntity(inputName,HttpStatus.OK) },java,spring,Java,Spring,我找到了这样的解决方案 @RequestMapping(value="/return/{name}",method=RequestMethod.GET) public ResponseEntity<String> ReturnName(HttpServletRequest req,@PathVariable(name) String inputName) { return new ResponseEntity<>(inputName, HttpStatus.OK)
@RequestMapping(value="/return/{name}",method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req,@PathVariable(name) String inputName) {
return new ResponseEntity<>(inputName, HttpStatus.OK)
}
@RequestMapping(value=“/return/{name}”,method=RequestMethod.GET)
public ResponseEntity ReturnName(HttpServletRequest请求,@PathVariable(名称)可选inputName){
返回新的响应属性(inputName.isPresent()?inputName.get():null,HttpStatus.OK)
}
但它并没有像预期的那样发挥作用
如果name的值未给定,则抛出405
例如:
返回/ram工作正常
return抛出405错误
我是否遗漏了什么
是否有任何spring属性来处理此问题
提前感谢。您不能,只需创建另一个方法来捕获url中没有{name}的url
@RequestMapping(value="/return/{name}",method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req,@PathVariable(name) Optional<String> inputName) {
return new ResponseEntity<>(inputName.isPresent() ? inputName.get() : null, HttpStatus.OK)
}
要使您自己提出的解决方案发挥作用并使用单一方法,您可以使用以下方法:
@RequestMapping(value="/return",method=RequestMethod.GET)
@RequestMapping(value= {"/return/{name}", "/return"},method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req, @PathVariable("name") Optional<String> inputName) {
return new ResponseEntity<>(inputName.isPresent() ? inputName.get() : null, HttpStatus.OK);
}
@RequestMapping(value={/return/{name},“/return”},method=RequestMethod.GET)
公共响应属性返回名称(HttpServletRequest请求,@PathVariable(“名称”)可选输入名称){
返回新的ResponseEntity(inputName.isPresent()?inputName.get():null,HttpStatus.OK);
}
最后还是有两个端点像Baldurian建议的那样。试试这个:
@RequestMapping(value={/return/{name},“/return”},method=RequestMethod.GET)
公共响应属性返回名称(HttpServletRequest请求,@PathVariable(“名称”)可选输入名称){
返回新的ResponseEntity(inputName.isPresent()?inputName.get():null,HttpStatus.OK);
}
@RequestMapping(value= {"/return/{name}", "/return"},method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req, @PathVariable("name") Optional<String> inputName) {
return new ResponseEntity<>(inputName.isPresent() ? inputName.get() : null, HttpStatus.OK);
}