компоненты граней не отображаются - PullRequest
0 голосов
/ 15 июня 2011

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

Соответствующий фрагмент моего файла 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-компоненты, такие как тексты и кнопки, отображаются правильно, однако такие компоненты, как таблицы данных и сообщения, не отображаются.

Если это служит чему-либо, мой вопрос тесно связан с: Как установить 'файл приветствия JSF2' с отображением сервлета лиц?

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

1 Ответ

2 голосов
/ 15 июня 2011

<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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...