У меня есть панель, которая содержит ссылку на разные страницы. Правая панель - это та, которая должна быть обновлена новой страницей на основе ссылки, нажатой на левой панели. Я хочу, чтобы это было обновление ajax, чтобы левая панель, верхний и нижний колонтитулы не обновлялись. Я попытался с помощью пользовательского интерфейса: включить, но страница обновляется только после второго щелчка. Ссылка на эту тему
пользовательский интерфейс: включить в richfaces 4 обновляется только при втором щелчке
Есть ли альтернативный способ добиться того же в JSF2 и Primefaces 2.2.1.
Спасибо
Обновление
<ui:define name="content">
<h:form id="form_01">
<div style="margin:0; padding:0; float:right; width:740px;background:#FFF; ">
<p:outputPanel id="pagePanel">
<ui:include src="#{panelMenu.currentPage}.xhtml"></ui:include>
</p:outputPanel>
</div>
<div style="padding:0; float:left;">
<p:panel style="width:205px;" header="User Menu">
<h:panelGrid columns="1">
<p:commandLink update="pagePanel" action="#{panelMenu.setCurrentPage('/pages/group_message')}">
<h:outputText value="Compose"/>
</p:commandLink>
<p:separator/>
<p:commandLink update="pagePanel" action="#{panelMenu.setCurrentPage('/pages/group_detail')}">
<h:outputText value="Groups"/>
</p:commandLink>
<p:separator/>
</h:panelGrid>
</p:panel>
</div>
</h:form>
</ui:define>
Фасоль
@ManagedBean(name="panelMenu")
@SessionScoped
public class PanelMenu {
private String currentPage = "/pages/group_detail";
public String getCurrentPage() {
System.out.println(Thread.currentThread().getStackTrace()[1]);
System.out.println(FacesContext.getCurrentInstance().getCurrentPhaseId());
return currentPage;
}
public void setCurrentPage(String currentPage) {
System.out.println(Thread.currentThread().getStackTrace()[1]);
System.out.println(FacesContext.getCurrentInstance().getCurrentPhaseId());
this.currentPage = currentPage;
}
}