ui:include包含JSF 2.2中的错误文件

时间:2017-09-13 08:10:00

标签: jsf jsf-2.2

根据documentation of ui:include tag

  

使用此标记 - 这与JSP的jsp:include-to encapsulate非常相似   并在多个XHTML页面之间重用内容。有三件事   此标记可以包括:普通XHTML和具有任何一个的XHTML页面   组合标签或组件标签。

     

你提供了一个文件名,通过ui:include的JSF的src属性   包括。该文件名相对于呈现的XHTML文件   作为上次请求的结果。所以,例如,如果JSF加载了   查看login.xhtml,该文件包含pageDecorations / header.xhtml,   和pageDecorations / header.xhtml包括companyLogo.xhtml,然后是   如果它在pageDecorations中,将找不到companyLogo.xhtml   目录,因为companyLogo.xhtml必须在同一目录中   as login.xhtml。

我创建了一个简单的测试:
web应用程序/ login.xhtml

dt <- read.table(text = "ID      e200 e200_cyp  e200_rad e200_obl
OTU_1    1        1        1        1
                 OTU_2    1        1        1        1
                 OTU_17   0        0        0        0
                 OTU_13   1        1        1        1
                 OTU_10   0        1        0        1
                 OTU_20   1        0        1        0",
                 header = TRUE, stringsAsFactors = FALSE)

web应用程序/ pageDecorations / header.xhtml

<!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:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">

<h:body>

    <ui:include src="pageDecorations/header.xhtml" />

</h:body>
</html>

web应用程序/ pageDecorations / logo.xhtml

<ui:include 
        src="logo.xhtml"

        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
/>

web应用程序/ logo.xhtml

<h:outputText 
      value="Logo in /pageDecorations" 
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
/>

当我在WildFly 10.1上使用JSF 2.2运行此测试(加载login.xhtml页面)时,我得到了<h:outputText value="Logo in /" xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" /> ,而根据文档它应该是:Logo in /pageDecorations

怎么了 ?文档或Mojarra实现中是否存在错误?
或者我的理解是错的?

1 个答案:

答案 0 :(得分:1)

首先,您在 webapp / 内并执行webapp/login.xhtml 在内部,你得到src="pageDecorations/header.xhtml"并且感谢你在 pageDecorations ,并且从header.xhtml中你要找到src =&#34; logo.xhtml&#34;您将进入同一目录( pageDecorations ),以便打印 &#34; / pageDecorations&#34; 中的徽标。 在这种情况下,文档看起来不对。