我正在使用 Primefaces 5.2,这是我的索引:
<!DOCTYPE html>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Demo</title>
<!-- Incluyendo CSS: -->
<link rel="stylesheet" href="./css/style.css" type="text/css" media="all" />
</h:head>
<h:body >
<div id="header">
<h:form id="ribbon">
<ui:include src="/ribbon.xhtml"/>
</h:form>
</div>
<div id="section">
<ui:include src="#{navegacion.pageName}.xhtml"/>
</div>
<div id="footer">
<ui:include src="/footer.xhtml"/>
</div>
</h:body>
</html>
还有我的导航 Bean:
package prueba;
import javax.faces.bean.ManagedBean;
import javax.faces.view.*;
@ManagedBean
@ViewScoped
public class navegacion {
private String pageName="condominios";
public navegacion() {
}
public String getPageName() {
return pageName;
}
public void setPageName(String pageName) {
this.pageName = pageName;
}
}
这就是问题所在:ribbon.xhtml 有一个像菜单一样的功能区组件来访问整个站点,明智的想法是这样放置:
<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:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:body>
<!-- Aqui agregamos un menu ribbon -->
<p:ribbon>
<!-- Ribbon Code Here -->
</p:ribbon>
</h:body>
</ui:composition>
但这消除了 CSS 样式并且不能正常工作,相反我不得不这样做:
<!DOCTYPE html>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Ribbon</title>
<link rel="stylesheet" href="./css/style.css" type="text/css" media="all" />
</h:head>
<p:ribbon >
<!-- Ribbon Code Here -->
</p:ribbon>
</html>
这可以正常工作,并且嵌入在 Primefaces 中的 css 主题也可以工作,但是如果我在 footer.xhtml 功能区中使用另一个 html 标记失败,为什么我不得不在ribbon.xhtml 中使用 HTML 标记,这对我来说是个谜。
事实上,我在这个布局方案(Ribbon/navigationBean(content)/footer)中使用 ui:include / ui:component 时遇到问题,因为我放入 content.xhtml 中的每个组件(我用 navigationBean 调用它,参见 index.xhtml ) 不工作。
我认为这两个问题是相关的,也许解决第一个问题是解决另一个问题的关键。
我正在尝试使用模板解决问题,但它也不起作用。