2016-01-29 2 views
1

При использовании JSF, можно выбрать один из нескольких расширений, как:Как заставить .jsf расширение файла, когда .xhtml набирается непосредственно в URL

  1. /лица/*
  2. * .jsf
  3. * .xhtml

Где последний рекомендуется для JSF 2.2 по крайней мере. Но что, если бы я хотел использовать расширение .jsf, у меня возникает проблема, что если кто-то должен был набирать «любопытство» .xhtml, то странные вещи могли бы начаться, если вы, например, смешиваете теги JSF с обычными тегами HTML.

Итак, я знаю, что консоль администратора GlassFish, например, заставляет URL переписывать .jsf, если я нахожу .xhtml, как я могу это сделать?

ответ

1

Два способа:

  1. Просто ограничить прямой доступ к файлам .xhtml в web.xml.

    <security-constraint> 
        <display-name>Restrict direct access to XHTML files</display-name> 
        <web-resource-collection> 
         <web-resource-name>XHTML files</web-resource-name> 
         <url-pattern>*.xhtml</url-pattern> 
        </web-resource-collection> 
        <auth-constraint /> 
    </security-constraint> 
    

    См. Также JSF returns blank/unparsed page with plain/raw XHTML/XML/EL source instead of rendered HTML output.

  2. Создать servlet filter который прослушивает на *.xhtml и перенаправляет на *.jsf.

    @WebFilter("*.xhtml") 
    public class FacesUrlRewriteFilter implements Filter { 
    
        @Override 
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException { 
         HttpServletRequest request = (HttpServletRequest) req; 
         HttpServletResponse response = (HttpServletResponse) res; 
    
         String redirectURI = request.getRequestURI().replaceAll("xhtml$", "jsf"); 
         String queryString = request.getQueryString(); 
    
         if (queryString != null) { 
          redirectURI += "?" + queryString; 
         } 
    
         response.sendRedirect(redirectURI); 
        } 
    
        // ... 
    } 
    

    Смотрите также How to use a servlet filter in Java to change an incoming servlet request url?

+0

На самом деле то, что я имел в виду с URL переписывания GlassFish было то, что на консоли администратора силы все в XHTML JSF, я думаю, мне нужно указать больше, но спасибо. –

+0

Да, я должен был указать больше об этом. –

 Смежные вопросы

  • Нет связанных вопросов^_^