我遇到了以下问题。假设我有一个像
这样的网址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)
答案 0 :(得分:1)
怎么样:
-a([^-]+)\.html
注意:我不知道spring语法。