我想更新一个ui:动态包含。 我尝试使用以下代码实现它:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Title</title>
</h:head>
<h:body>
<p:layout fullPage="true" resizeTitle="resize"
style="background-color:#FFFFFF;">
<p:layoutUnit position="north" id="north" size="130" resizable="false" closable="false">
<ui:include src="header.xhtml" />
</p:layoutUnit>
<p:layoutUnit position="west" id="west" size="231" resizable="false" closable="false" style="overflow:hidden;" >
<h:form>
<ui:include src="menu.xhtml" />
</h:form>
</p:layoutUnit>
<p:layoutUnit styleClass="layoutUnitCenter" position="center">
<h:form id="mainForm">
<ui:insert name="content" />
</h:form>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
客户:
<ui:composition 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"
xmlns:p="http://primefaces.org/ui"
template="WEB-INF/templates/layout.xhtml" >
<ui:define name="content">
<ui:include src="pages/#{appView.content}.xhtml" />
</ui:define>
</ui:composition>
使用AppView.java:
@ManagedBean
@SessionScoped
public class AppView {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@PostConstruct
public void init() {
this.content = "tiers/search";
}
}
第一页是搜索页面。当我进行搜索并找到某些内容时,我会尝试更新内容&#34;包含具有结果的页面。
search.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:form id="form" title="Recherche">
<p:growl id="msgs" showDetail="true" />
<p:panelGrid columns="2" cellpadding="5">
<p:outputLabel for="numPersonne" value="Numéro Personne" />
<p:inputText id="numPersonne" size="20" value="#{ficheRechercheView.numPersonne}" />
<p:outputLabel for="numSiren" value="Numéro SIREN" />
<p:inputText id="numSiren" size="20" value="#{ficheRechercheView.numSiren}" />
<p:outputLabel for="numInternatl" value="Numéro International" />
<p:inputText id="numInternatl" size="50" value="#{ficheRechercheView.numInternatl}" />
<p:outputLabel for="raisonSociale" value="Raison sociale" />
<p:inputText id="raisonSociale" size="50" value="#{ficheRechercheView.raisonSociale}" />
</p:panelGrid>
<p:commandButton value="Valider" action="#{searchView.search}" icon="ui-icon-check" />
</h:form>
</ui:composition>
SearchView.java将AppView.java作为托管属性。
@ManagedProperty(value="#{appView}")
private AppView appView;
public void search() {
....
appView.setContent("tiers/detail");
RequestContext context = RequestContext.getCurrentInstance();
context.update("content");
}
如果我更新页面,我只会获得更新的显示。
作为一个旁听的问题,我应该以这种方式管理导航,还是每次只使用相同的模板加载不同的页面?