cur*_*us1 39 spring path-variables spring-mvc
我正在做一个Spring网站.对于控制器方法,我能够使用RequestParam来指示是否需要参数.例如:
@RequestMapping({"customer"})
public String surveys(HttpServletRequest request,
@RequestParam(value="id", required = false) Long id,
Map<String, Object> map)
Run Code Online (Sandbox Code Playgroud)
我想使用PathVariable,如下所示:
@RequestMapping({"customer/{id}"})
public String surveys(HttpServletRequest request,
@PathVariable("id") Long id,
Map<String, Object> map)
Run Code Online (Sandbox Code Playgroud)
如何指示是否需要路径变量?我需要使它成为可选项,因为在创建新对象时,在保存之前没有可用的关联ID.
感谢帮助!
Mar*_*rko 55
VTTom的解决方案是正确的,只需将"value"变量更改为数组并列出所有URL可能性:value = {"/","/ {id}"}
@RequestMapping(method=GET, value={"/", "/{id}"})
public void get(@PathVariable Optional<Integer> id) {
if (id.isPresent()) {
id.get() //returns the id
}
}
Run Code Online (Sandbox Code Playgroud)
Tri*_*tan 39
没有办法让它成为可选项,但是您可以创建两个方法,其中一个具有@RequestMapping({"customer"})注释,另一个具有注释@RequestMapping({"customer/{id}"}),然后在每个方法中相应地执行操作.
VTT*_*Tom 30
我知道这是一个老问题,但是搜索"可选路径变量"会使这个答案很高,所以我认为值得指出的是,自从使用Java 1.8的Spring 4.1以来,这可以使用java.util.Optional类.
一个例子是(注意该值必须列出所有需要匹配的潜在路由,即使用id路径变量而不使用.道具指向@ martin-cmarko指出)
@RequestMapping(method=GET, value={"/", "/{id}"})
public void get(@PathVariable Optional<Integer> id) {
if (id.isPresent()) {
id.get() //returns the id
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54914 次 |
| 最近记录: |