如果缺少特定的查询参数,如何简单地重定向 url?
@RestController
public class PersonController {
//only in case the "sort" query parameter is missing
@GetMapping("/persons")
public String unsorted() {
return "redirect:/persons?sort=name";
}
//only in case the "sort" query parameter exists
@GetMapping("/persons")
public String sorted() {
//...
}
}
- 使用 @RequestParam 提取查询参数
- 为@RequestParam添加参数:值、默认值、必需
使用 Java>= 8:
@RestController
public class PersonController {
@GetMapping("/persons")
public String personList(@RequestParam(value = "sort", defaultValue = "name") Optional<String> sort) {
//handling process here
}
}
使用 Java <8:
@RestController
public class PersonController {
@GetMapping("/persons")
public String personList(@RequestParam(value = "sort", defaultValue = "name", required=false) String sort) {
//handling process here
}
}
你可以使用 @GetMapping.params
@GetMapping(value = "/persons", params = "sort")
public String sorted() {
您可以使用params
元素。一个映射将支持排序参数存在时的params="sort"
,另一个映射将支持params="!sort"
排序参数何时缺失。
但是,您可能需要考虑使用默认值,而不是执行重定向。重定向有什么好处?它将要求服务器响应,然后让客户端发出第二个HTTP请求。
使用参数
@RestController
public class PersonController {
//only in case the "sort" query parameter is missing
@GetMapping(value = "/persons", params = "!sort")
public String unsorted() {
return "redirect:/persons?sort=name";
}
//only in case the "sort" query parameter exists
@GetMapping(value = "/persons", params = "sort")
public String sorted() {
//...
}
}
使用默认值
@RestController
public class PersonController {
//only in case the "sort" query parameter exists
@GetMapping("/persons")
public String sorted(
@RequestParam(name = "sort", defaultValue = "name") String sort)
{
//...
}
}
您可以设置默认值:
@RestController
public class PersonController {
//only in case the "sort" query parameter is missing
@GetMapping("/persons")
public String unsorted(@RequestParam(value = "sort", defaultValue = "name") String name) {
// do logic
}
}
您还可以设置缺失值的默认值并继续前进
@RequestParam(value = "sort", defaultValue = "name") String name