java - Spring MVC - 如何在缺少参数时返回 404

标签 java spring-mvc

我想在没有传递所有参数时触发 404 页面。假设我有以下 URI:

/myapp/op?param1=1&param2=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();
  }
}

每当 param1param2 为 null 时,将返回 404

关于java - Spring MVC - 如何在缺少参数时返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372632/

相关文章:

java - Spring Boot OAuth2 `AbstractTokenGranter.validateGrantType()` 方法中发生了什么?

java - HttpSession-s 之间共享的 Spring session bean

java - Spring自动将GET请求参数映射到POJO

java - 为什么枚举不是常量表达式?

java - 开发多屏幕时,绘图应该放在哪里?

java - Spring 3 MVC中的文件上传-空指针异常

java - 无法使用 @PropertySource 将 .properties 文件注入(inject) Spring MVC 4.3

java - spring mvc 表单错误没有出现在 jsp 上

java - Java 中 Date 对象可变性的 Findbugs 问题

java - DoublyLinkedList(普林斯顿版)删除方法如何工作?