java - Spring MVC 中 @RequestMapping() 的正则表达式

标签 java spring spring-mvc

只有当蔬菜名称不是胡萝卜、 bean 类或洋葱时,我才想访问该方法,因此如果我给番茄,它应该返回 View 。我使用的网址如下,此网址有什么问题吗?

@RequestMapping("/**/vegetables/{name:^[carrot|beans|onions]}")
public String vegetablesNames(){
    return "vegetables";
}

最佳答案

您应该在方法内部进行验证:

@RequestMapping("/vegetables/{name}")
public String vegetablesNames(@PathVariable String name){

    if (name.matches("your regex") {
        throw new RuntimeException(name + " doesn't match");
    }
    return "vegetables";
}

@PathVarialbe 是从请求 URI 中提取的变量。您可以将其解压缩并按照您的意愿使用它。

基本上,路径应该描述该 uri 上可用的资源。如果资源不可用,则响应应该是例如NOT_FOUND。在 Spring 中,对导致 RuntimeException 的请求的默认响应是 5xx 在这种情况下这不是一个好的选择,但这只是一个示例.

如果您有兴趣在 Spring 中处理异常,只需要求说明即可。

关于java - Spring MVC 中 @RequestMapping() 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45607211/

相关文章:

java - 清理 Vaadin RichTextArea

java - 二维游戏中碰撞的高效算法?

c# - java是否像c#一样支持显式接口(interface)实现?

java - 为android做一个基本的定时器?

java - 使 spring @Value 从静态字段中获取默认值

java - 如何在服务层调用服务

spring - JSP 表单 : HttpStatus 400: The request sent by the client was syntactically incorrect

java - Maven 项目中关于添加 jasper-report 依赖项的构建问题

spring - javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode() Ljavax/persistence/SharedCacheMode;

spring-mvc - 如何为 Swagger 注释嵌套 Java 类?