gpt4 book ai didi

java - 面组件未显示

转载 作者:行者123 更新时间:2023-12-02 08:16:21 26 4
gpt4 key购买 nike

我正在尝试制作一个非常简单的应用程序。使用开始菜单作为欢迎页面,但是我遇到了未显示面孔组件的问题。

我的 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 组件(例如文本和按钮)显示正确,但是 primefaces 组件(例如数据表和消息)没有显示。

如果它有什么作用,我的问题与:How to set 'JSF2 welcome-file' with faces servlet mapping?密切相关。

感谢您的帮助

最佳答案

<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,也无需担心当最终用户随意编辑 URL 以删除 JSF 映射时 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>

关于java - 面组件未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6350603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com