【发布时间】:2013-03-06 20:55:35
【问题描述】:
我决定尝试 JSF 2.2(或我们目前拥有的),所以我获取了 Mojarra 的最新快照版本并进行了设置。现在我有一个使用漂亮照片的模板。它在 JSF 2.1 上运行良好,但是当我更改为最新的 mojarra 版本时,prettyphoto 窗口没有显示。它让我发疯了几个小时(我的电脑里现在有 2 台 glassfish 服务器,一台使用最新的 mojarra,一台使用稳定版)。在意识到最新的 mojarra 版本没有忽略以 <ui:composition> 开头的模板客户端的 DOCTYPE 后,我开始使用它。
为了让我的例子更清楚......我有这样的事情:
JSF MASTER TEMPLATE 带有 DOCTYPE HTML 和一些 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>
当这个后来的模板客户端被渲染到浏览器时,它会与 doctype composition 一起发送。我认为它应该忽略 ui:composition 之外的所有内容。 在稳定的 Mojarra 构建中,Composition DOCTYPE 被忽略,它以 html 形式出现...
我最初怀疑这是一个错误,但也许是故意的?虽然他们应该告诉你这一点,但我为此迷失了一天。
【问题讨论】:
-
对 JSF 2.2 最新快照的抱怨?
-
不,我怎么能抱怨快照?哈哈。只是想知道这是一个错误还是预期的行为。如果这是一个错误我会报告它,我只是想先检查这里。
-
最好先举报,然后大伙来干活。
-
会的,我会让这个问题在这里闲逛一下,以防有人知道规范,并在我提交报告后删除
-
由于 DOCTYPE 是组合而不是 html,这给我带来了一些 CSS 问题,我一直在摸索。终于弄清楚了为模板解析 DOCTYPE 的顺序包括等等。我想知道,如果它所做的只是造成这样的混乱,那么拥有“DOCTYPE 组合”的目的是什么......我想我会从'ui:composition' 让我的生活更简单