期望具有“XOR”验证的请求参数

时间:2013-01-11 14:47:40

标签: spring spring-mvc

我在spring mvc控制器中有一个简单的请求调用

@ResponseBody
@RequestMapping(value = "/url", method = RequestMethod.GET)
public SomeDTO getSth(@RequestParam("paramA") Integer paramA, @RequestParam("paramB") Integer paramB) {
    // ...
}

我想要paramA或paramB否则是正常的http响应,因为如果我不提供这两个参数,它当前会发生。

我知道有一个必需的参数可用,但我没有看到连接两者的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我想不出一个非常好的解决方案,但直截了当的似乎是正常的,不是吗?

@ResponseBody
@RequestMapping(value = "/url", method = RequestMethod.GET)
public String getSth(@RequestParam(value = "paramA", required = false) Integer paramA,
        @RequestParam(value = "paramB", required = false) Integer paramB) {
    if (paramA == null ^ paramB == null) {
        return "body";
    } else {
        throw new BadRequestException();
    }
}

@ResponseStatus(value = HttpStatus.NOT_FOUND)
public static class BadRequestException extends RuntimeException {
    private static final long serialVersionUID = 1L;
}