@RequestMapping中的正则表达式

时间:2014-01-28 16:03:52

标签: regex spring-mvc

我遇到了以下问题。假设我有一个像

这样的网址
http://localhost:8080/a/somename-anyothername-onemorename-aAttributeId.html
http://localhost:8080/a/anyothername-onemorename-aAttributeId.html
http://localhost:8080/a/anyothername-onemorename-anyothername-anyothername-aAttributeId.html
...

通常,网址可能包含许多部分。我的目标是将上面网址的 AttributeId 部分设置为@RequestMapping中的变量,如下所示

@Controller
@RequestMapping(value = "/**/a")
public class ProductPageController extends AbstractPageController
{

@RequestMapping(value = "/{attributeId:(?:[-a])(?!.*(?:[-a])).*}.html", method =      RequestMethod.GET)
     public String requestHandler(@PathVariable("attributeId") final String attributeId,   final Model model) {
          //method body
     }
}    
} 

我的问题是我的正则表达式做错了什么?我应该以某种方式拆分正则表达式以逃避aAttributeId.html部分之前的所有内容,如下所示:

@RequestMapping(value = "/{unused:*.}{productCode:(?:[-a])(?!.*(?:[-a])).*}.html", method = RequestMethod.GET)

感谢您的想法

更新:回答问题

最终映射如下所示:

@RequestMapping(value = "/**{attributeId:a(?:[^-]+)}.html", method = RequestMethod.GET)

1 个答案:

答案 0 :(得分:1)

怎么样:

-a([^-]+)\.html

注意:我不知道spring语法。