2

我决定尝试 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...

我最初怀疑这是一个错误,但也许是故意的?尽管他们应该告诉你这一点,但我已经为此迷失了一整天。

4

1 回答 1

-1

我有这个代码

<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">
于 2013-09-03T22:34:13.720 回答