我想在没有传递所有参数时触发 404 页面。假设我有以下 URI:
/myapp/op?param1=1¶m2=2@param3=3
如果其中一个参数未被调用,我想返回 404 页面。我尝试这样做:
@ResponseStatus(HttpStatus.NOT_FOUND)
@RequestMapping(value = "op", params = { "!param1" })
public void missingArg() {
}
但随后我收到一个异常,告诉我在处理缺少的第二个和第三个参数的方法之间存在歧义。
那我怎样才能做到这一点呢?
最佳答案
如果你使用的是 Spring 3.1,你可以像这样定义一个异常类:
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public final class ResourceNotFoundException extends RuntimeException {
// class definition
}
现在,无论何时抛出该异常,Spring 都会返回在您的 @ResponseStatus
注释中定义的 http 状态。例如:
@RequestMapping(value = "/op")
public void methodWithRequestParams(@RequestParam(value = "param1", required = false) String param1,
@RequestParam(value = "param2", required = false) String param2) {
if (param1 == null || param2 == null) {
throw new ResourceNotFoundException();
}
}
每当 param1
或 param2
为 null 时,将返回 404
。
关于java - Spring MVC - 如何在缺少参数时返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372632/