Não é possível mapear a expressão regular - java.lang.IllegalArgumentException: O número de grupos de captura no segmento padrão
Eu tenho o seguinte método definido no meu controlador:
@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...
}
No entanto, quando eu faço a seguinte solicitação HTTP - / ajax / comments / post / ad1374659405664 eu recebo exceção:
org.springframework.web.util.NestedServletException: Falha no processamento da solicitação; exceção aninhada é java.lang.IllegalArgumentException: O número de grupos de captura no segmento padrão (([apv] | ad) \ d +) não corresponde ao número de variáveis de modelo URI que ele define, o que pode ocorrer se grupos de captura forem usados em um modelo de URI regex. Use grupos sem captura.
O Google não dá tanto resultado e é estranho, porque quando eu verifico o regex([vpa]|ad)\d+
emhttp://regexpal.com/ combina tudo corretamente. O que estou fazendo de errado?