2011-06-14 2 views
0

Я стараюсь сделать очень простое приложение. При стартовом меню в качестве страницы приветствия, однако у меня возникают проблемы с отображением компонентов лиц.Компоненты лиц не отображаются

Соответствующий фрагмент моей web.xml

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>menu.xhtml</welcome-file> 
</welcome-file-list> 
<filter> 
    <filter-name>WelcomeFileFilter</filter-name> 
    <filter-class>giu.WelcomeFileFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>WelcomeFileFilter</filter-name> 
    <url-pattern>/menu.xhtml</url-pattern> 
</filter-mapping> 

Мой файл menu.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:p="http://primefaces.prime.com.tr/ui" 
      xmlns:f="http://java.sun.com/jsf/core"> 
<h:form id="menuForm"> 
    <h1><h:outputText id="menuTitle" value="Menu Principal"/></h1><br/><br/> 
    <h3><h:outputText id="patientsTitle" value="Pacientes"/></h3><br/> 
    <h:panelGrid id="patientsGrid" columns="2"> 
     <h:outputText value="Consultar, Crear, Editar o Eliminar Paciente"/> 
     <p:commandButton id="goToPatientsButton" value="Ir"/> 
    </h:panelGrid><br/><br/> 
    <h3><h:outputText id="doctorsTitle" value="Medicos"/></h3><br/> 
    <h:panelGrid id="doctorsGrid" columns="2"> 
     <h:outputText value="Consultar, Crear, Editar o Eliminar Medicos"/> 
     <p:commandButton id="goToDoctorsButton" value="Ir"/> 
    </h:panelGrid><br/><br/> 
    <h3><h:outputText id="medicalHistoryTitle" value="Historias Medicas"/></h3><br/> 
    <h:panelGrid id="medicalHistoryGrid" columns="2"> 
     <h:outputText value="Consultar, Crear, Editar o Eliminar Historias Medicas"/> 
     <p:commandButton id="goToMedicalHistoriesButton" value="Ir"/> 
    </h:panelGrid> 
    <p:dataTable emptyMessage="Vacio" paginator="true"/> 
</h:form> 

Я не знаю, что я делаю неправильно, простые компоненты HTML, такие как тексты и кнопки отображаются правильно, однако такие элементы, как дата и данные, не отображаются.

Если он служит для чего-нибудь, мой вопрос тесно связан с: How to set 'JSF2 welcome-file' with faces servlet mapping?

Спасибо за любую помощь

ответ

2

<welcome-file> не может быть «виртуальный» URL. Определите его как menu.xhtml и создайте Filter, который отображается на /menu.xhtml и перенаправляет правильный URL-адрес.

@WebFilter(urlPatterns={"/menu.xhtml"}) 
public class WelcomeFileFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
     ((HttpServletResponse) response).sendRedirect("faces/menu.xhtml"); 
    } 

    // ... 
} 

Или еще лучше, вы можете также рассмотреть вопрос просто избавиться от отображения /faces/* префикса вообще в пользу отображения расширений. Я рекомендую использовать *.xhtml, так что вам никогда не придется беспокоиться о URL-адресах, а также не о том, что исходный код JSF будет отображаться, когда конечный пользователь будет исправлять URL-адрес, чтобы удалить сопоставление JSF.

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>menu.xhtml</welcome-file> 
</welcome-file-list> 
+0

Привет Балус, не знаю exaclty где _webcontent root_ извините за глупый вопрос, наверное – camiloqp

+0

Это папка, в которой все ваши общедоступные веб-файлы. Это папка, в которой находится папка '/ WEB-INF'. Кстати, теперь я понимаю, что это не обязательно, поскольку вы используете одно и то же расширение файла, поэтому я обновил ответ. Кстати, почему бы вам просто не пойти на расширение? Это намного проще и проще. – BalusC

+0

О, ну, у меня есть не пустой _menu.xhtml_ прямо там, с вашим ответом отображается отображение страницы, но без компонентов лиц. – camiloqp

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