JSF <ui:insert>
используется при создании шаблонов.В соответствии с вашим кодом, я думаю, что 1-й кусок кода - это шаблон parentBranches.xhtml
.И второй фрагмент кода - это шаблон клиента customerVoice.xhtml
, который использовал вышеупомянутый шаблон.Вкратце, template + template client = page
.Если вы хотите открыть страницу customerVoice.xhtml
, вам нужно перейти на эту страницу.Вы не можете сделать это с Ajax.
В общем, я могу придумать 2 способа достижения вашей цели:
Не используйте Ajax, удалив весь <f:ajax>
, и оставьте его как:
<h:commandLink action="customerVoice"><h2>contact</h2></h:commandLink>
Использование <ui:include>
.
На своей первой странице .xhtml вы можете изменить часть ContentLoader
на что-то вроде этого:
<h:panelGroup id="ContentLoader" >
<div id="CONTENT_CONTAINER">
<ui:include src="#{mrBean.page}" />
</div>
</h:panelGroup>
Изменить ссылкунапример:
<h:commandLink actionListener="#{mrBean.openPage('customerVoice.xhtml')}"
value="contact" style="font-size: large">
<f:ajax render="ContentLoader" />
</h:commandLink>
Создайте ManagedBean
для управления содержимым.Это должно быть так:
@ManagedBean
@RequestScoped
public class MrBean {
private String page;
public MrBean() {
this.page = "The link to the page that contains your default content";
}
public void openPage(String thePage) {
this.page = thePage;
}
}
Вы можете взглянуть на этот ответ для другого примера о <ui:include>
.Это руководство от Mkyong.com также может быть полезно для вас.
ОБНОВЛЕНИЕ: Это тестовая страница, на которой вы можете попробовать:
<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body >
<h:form id="form">
<h:commandLink actionListener="#{mrBean.openPage('Full URL to your customerVoice.xhtml')}"
value="contact" style="font-size: large">
<f:ajax render="ContentLoader" />
</h:commandLink>
<h:panelGroup id="ContentLoader" >
<div id="CONTENT_CONTAINER">
<ui:include src="#{mrBean.page}" />
</div>
</h:panelGroup>
</h:form>
</h:body>
</html>