我决定尝试 JSF 2.2(或者我们目前拥有的),所以我获取了 Mojarra 的最新快照版本并进行了设置。现在我有一个使用漂亮照片的模板。它在 JSF 2.1 上运行良好,但是当我更改为最新的 mojarra 版本时,prettyphoto 窗口没有显示。它让我发疯了几个小时(我的电脑里现在有 2 台 glassfish 服务器,一台使用最新的 mojarra,一台使用稳定版)。在意识到最新的 mojarra 构建没有忽略以<ui:composition>
.
为了让我的例子更清楚......我有这样的事情:
带有DOCTYPE HTML和一些 UI:INSERTS 的JSF主模板
<?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>
当这个后来的模板客户端被渲染到浏览器时,它会与 doctype composition 一起发送。我认为它应该忽略 ui:composition 之外的所有内容。在稳定的 Mojarra 构建中,Composition DOCTYPE 被忽略并且它输出为html...
我最初怀疑这是一个错误,但也许是故意的?尽管他们应该告诉你这一点,但我已经为此迷失了一整天。