【发布时间】:2011-06-04 14:16:05
【问题描述】:
当我尝试打开我的页面http://localhost:8084/Gpsi-worked/admin.xhtml 时,我有一个空白页面,但是当我尝试这个http://localhost:8084/Gpsi-worked/faces/admin.xhtml 时,问题出在哪里,我在我的项目中使用模板。
【问题讨论】:
标签: java templates jsf primefaces
当我尝试打开我的页面http://localhost:8084/Gpsi-worked/admin.xhtml 时,我有一个空白页面,但是当我尝试这个http://localhost:8084/Gpsi-worked/faces/admin.xhtml 时,问题出在哪里,我在我的项目中使用模板。
【问题讨论】:
标签: java templates jsf primefaces
这是因为FacesServlet 映射到/faces/* 而不是*.xhtml 的URL 模式。 FacesServlet 负责完成所有 JSF 工作。所有对 JSF 页面的请求都必须调用 FacesServlet。然后它将解析 XML 模板中的 Facelets 和 JSF 标记并生成 HTML 代码。右键单击网络浏览器中的空白页并选择查看源代码。您将看到所有 JSF 标记都未解析。浏览器不理解 JSF 标签,它只理解 HTML。
为了摆脱/faces/*路径,你需要将web.xml中FacesServlet的URL模式从
<url-pattern>/faces/*</url-pattern>
到
<url-pattern>*.xhtml</url-pattern>
这有一个唯一(次要)警告,如果不调用 FacesServlet,您将无法再提供普通的 .xhtml 文件,但这些文件实际上应该作为 .html 提供;)
【讨论】:
在web.xml 中,您将指定一个servlet 映射,它会寻找带有/faces/*(或者也可能是.faces)的URL 路径,以便向FacesServlet 发送请求。如果您不想要 /faces 前缀,请将映射更改为更合适的内容。
【讨论】:
你确定这是一个空白页吗?因为您应该得到一个错误,也许如果您查看空白页面的源代码,您可能会看到您的 JSF 页面未处理?
【讨论】: