根据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实现中是否存在错误?
或者我的理解是错的?
答案 0 :(得分:1)
首先,您在 webapp / 内并执行webapp/login.xhtml
在内部,你得到src="pageDecorations/header.xhtml"
并且感谢你在 pageDecorations ,并且从header.xhtml中你要找到src =&#34; logo.xhtml&#34;您将进入同一目录( pageDecorations ),以便打印
&#34; / pageDecorations&#34; 中的徽标。
在这种情况下,文档看起来不对。