java - 如何检查@RequestMapping参数中的请求参数不是空字符串?

标签 java spring spring-mvc hibernate-validator spring-annotations

在我的 Controller 中,我有 String 参数,其中包含一些 id,它不应该是空字符串的 null。我想知道,有什么方法可以检查@RequestMapping 参数中的字符串是否为空? 我试图以某种方式解决它

@RequestMapping(value = someURL, params = {"id"})
public SomeResponse doSomething(@RequestParam(required = true) String id)

@RequestMapping(value = someURL, params = {"!id="})
public SomeResponse doSomething(@RequestParam(required = true) String id)

@RequestMapping(value = someURL, params = {"!id=\"\""})
public SomeResponse doSomething(@RequestParam(required = true) String id)

没有成功。 据我了解, params = {"id"}@RequestParam(required = true) 都只能检查参数 id 是否出现在请求(!= null)。

很可能我必须使用 Controller boby 中的代码来检查这一点,例如

if (id == null || id.isEmpty()) {
    return someErrorResponse;
}

但如果我错了,请纠正我。 提前致谢。

附:我的应用在 Apache Tomcat 7.0.62 容器中的 Java 1.7 SE 上运行

最佳答案

根据使用该注释的 Spring 代码

org.springframework.web.servlet.mvc.annotation.ServletAnnotationMappingUtils.checkParameters(String[], HttpServletRequest)

这样的事情应该可以工作:

@RequestMapping(value = someURL, params = {"id!="})
public SomeResponse doSomething(@RequestParam(required = true) String id)

关于java - 如何检查@RequestMapping参数中的请求参数不是空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475877/

相关文章:

java - 如何使用 JSSE 实现在 tomcat 8.5.5 中启用 TLSv1.3

java - 限制可以同时连接到服务器的客户端数量

spring - 如何简单地将 slf4j 添加到 pom.xml 包装 log4j?

application.yml中的spring boot日志设置

java - Spring - 根据 bean 验证 Controller 内的输入

java - 如何在TimePicker中设置自定义时间

java - 多个 API 调用 : Design Patterns

java - jpa查询两个日期之间

java - 使用 Java 注解的 ViewResolver

Spring 安全日志或为每个未经授权(访问被拒绝)的请求添加自定义消息