我决定尝试 JSF 2.2(或者我们目前拥有的),所以我获取了最新的 Mojarra 快照构建并进行了设置。现在我有一个使用 prettyphoto 的模板。它在 JSF 2.1 上运行良好,但当我更改为最新的 mojarra 版本时,漂亮的照片窗口没有显示。它让我发疯了几个小时(现在我的电脑里有 2 台 glassfish 服务器,一台是最新的 mojarra,一台是稳定的)。在意识到最新的 mojarra 版本没有忽略以 <ui:composition>
开头的模板客户端的 DOCTYPE 之后,我开始使用它。 .
为了让我的例子更清楚..我有这样的东西:
JSF MASTER TEMPLATE WITH DOCTYPE HTML AND A FEW UI:INSERTS
<?xml version='1.0' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
使用 DOCTYPE 组合实现主模板的 JSF 常规页面:
<?xml version='1.0' encoding='UTF-8' ?>
<?xml version='1.0' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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:jsf="http://java.sun.com/jsf"
template="./WEB-INF/template/MASTERTEMPLATE.xhtml>
.....<ui:define /> etc etc....
</ui:composition>
当这个后来的模板客户端呈现给浏览器时,它与文档类型组合一起发送。我认为它应该忽略 ui:composition 之外的所有内容。 在稳定的 Mojarra 构建中,Composition DOCTYPE 被忽略,它以 html 格式输出...
我最初怀疑这是一个错误,但也许是故意的?虽然他们应该告诉你,但我为此浪费了一整天。
最佳答案
我有这个代码
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/template/template.xhtml">
如果您的模板文件夹在 web-inf 中,请添加此文件夹
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/template/template.xhtml">
关于java - Mojarra 2.2-快照和文档类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15257832/