我使用的是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>
还有我的导航豆:
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.html有一个像菜单一样的功能区组件来访问整个网站,敏感的想法是这样放:
<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.HTML中的HTML标记,这是一个错误。
事实上,我在使用这个布局方案中的ui:include/ui:组件(Ribbon/navigationBean(content)/footer)时遇到了问题,因为我放在content.xhtml中的每个组件(我用navigationBean调用它,请参阅index.xhtml)都不起作用。
我认为这两个问题是相关的,也许解决第一个问题是解决另一个问题的关键。
我正试图用一个模板来解决这个问题,但它也不起作用。
问题是导入,在Bean中我放了这个:
import javax.faces.bean.ManagedBean;
import javax.faces.view.*;
@ManagedBean
@ViewScoped
而且是错误的,正确的导入是这样的:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
这解决了我早些时候评论的两个问题。