[RESOLVIDO] Vraptor @Path regex

Olá pessoal, tudo bem?

Criei um FrontController que irá receber todas as requisições e ira carregar o conteudo pela url…
Tenho uma expressão regular que aceita qualquer coisa exceto a url das assets.

@Path(value = "{slug:^/[^(assets)].*$}", priority = Integer.MAX_VALUE)
public void render(String slug){
  //code
}

Acontece que com o slug no value do @Path o vraptor não casa nenhum valor com a expressão regular.

Se remover o slug:

@Path(value = "{^/[^(assets)].*$}", priority = Integer.MAX_VALUE)
public void render(String slug){
  //code
}

ele aceita:
/noticias
/servicos

mas não aceita:
/noticias/destaques
/noticias/titulo-da-noticia

O que preciso é que aceite os valores acima e não aceite /assets/images/imagem.jpg e /assets/javascripts/app.js

Alguma sugestão?

Obrigado!

tem uma solução razoável pra isso:

public class CustomVRAptor extends VRaptor {

      @Override
      public void doFilter(request, response, chain) {
           if (request.getRequestURI().startsWith(request.getContextPath() + "/assets)) {
                chain.doFilter(request, response);
           } else {
                super.doFilter(request.response,chain);
           }
      
      }
}

faltam alguns casts e declarações de tipos… assim vc só entra na stack do VRaptor se a url não começar com /assets.

daí no web.xml vc registra esse CustomVRaptor ao invés do VRaptor.

daí nas urls vc não precisa fazer a regex que vc fez, basta fazer:

@Path(value = "/{slug*}", priority = Path.LOWEST)

o * significa q o slug pode conter barras (/), e a prioridade setada pra LOWEST pra qqer lógica poder sobrescrever.