无法映射正则表达式 - java.lang.IllegalArgumentException:模式段中捕获组的数量



我在控制器中定义了以下方法:

@RequestMapping(value = "/ajax/comments/post/{contentId:([apv]|ad)\d+}")
    public @ResponseBody
    ActionResult handlePostCommentRequest(HttpServletRequest request, Model model,
            @PathVariable("contentId") String assetId,
            @RequestParam(value = "nickName", required = false, defaultValue = "Anonyymi") String nickName,
            @RequestParam(value = "text", required = false, defaultValue = "") String text,
            @RequestParam(value = "createThread", required = false, defaultValue = "false") String createThread) {
            // some code...
}

然而,当我执行以下HTTP请求时——/ajax/comments/post/ad1374659405664,我得到了异常:

org.springframework.web.util.NestedServlet异常:请求处理失败;嵌套异常为java.lang.IollegalArgumentException:模式段(([apv]|ad)\d+)与URI的数目不匹配它定义的模板变量,在捕获组时可能发生在URI模板regex中使用。请改用非捕获组。

谷歌没有给出那么多结果,这很奇怪,因为当我检查正则表达式时([vpa]|ad)d+在里面http://regexpal.com/它与所有内容都匹配正确。我做错了什么?

所有内容都在错误消息中显示:use non-capturing groups instead

(?:[apv]|ad)\d+

请参阅http://www.regular-expressions.info/brackets.html了解更多详细信息。

最新更新