我想以以下格式将参数传递给Web服务:
http://.../greetings/neil/1
而不是
http://.../greetings?name=neil&id=1
因此,我更改了代码(请注意,我只在代码中包含了第一个参数):
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
至:
@RequestMapping
public Greeting greeting(@PathVariable String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
可以,但是我不知道如何向@PathVariable添加默认值,例如:
http://.../greetings/
http://.../greetings/neil/
会像处理查询参数一样工作。
我该怎么做呢?我以为可能会传递null,但只会产生页面错误。
我猜答案可能是添加多个重载,但这听起来有点困惑。
谢谢。
谢谢。
最佳答案
下面的方式呢?我正在使用java.util.Optional类,该类充当可以为null或非null的对象的包装。
@RequestMapping
public Greeting greeting(@PathVariable Optional<String> name) {
String newName = "";
if (name.isPresent()) {
newName = name.get() //returns the id
}
return new Greeting(counter.incrementAndGet(),
String.format(template, newName));
}
或者,您可以定义两个单独的请求映射处理程序:
@RequestMapping("/greeting")
public Greeting defaultGreeting()
和
@RequestMapping("/greeting/{name}")
public Greeting withNameGreeting(@PathVariable String name)