Mojarra 2.2.11 を使用しています
ナビゲーションメニューで動的インクルードコンテンツをajax-refreshする方法から始めますか? 1 つの leftMenu 部分 (1 つの xhtml 内) と、別の xhtml#{pageBean.page}
がページに含まれる 1 つのコンテンツ部分: タブのリストが表示されるコンテンツ部分と、leftMenu 部分の selectOneMenu で選択された製品を更新したいと考えています。
JSF 2.0 Faceletsを使用してXHTMLに別のXHTMLを含める方法の助けを借りて? 使用ui:param
しました(適切かどうかはわかりません)。
ui:param
製品に応じてコンテンツ パーツのタブが更新される前に、sessionProduct(String) パラメータに保存されている新しく選択された製品を渡すにはどうすればよいですか?
(タブのリストは製品によって異なる場合があります)
content.xhtml:
<ui:composition>
<h:outputScript name="js/fixviewstate.js" />
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ui:include src="leftMenu.xhtml" />
</div>
<div id="target" class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<ui:insert name="content" />
<ui:include src="/WEB-INF/includes/#{pageBean.page}.xhtml" >
<ui:param name="??" value="#{bean.product}" />
</ui:include>
</div>
</div>
</div>
</ui:composition>
leftMenu.xhtml:
<ui:composition>
<h:form>
<p:outputPanel style="float:center;margin-left: 33px">
<h:selectOneMenu value="#{bean.product}" onchange="submit();"
valueChangeListener="#{bean.init}">
<f:selectItems value="#{bean.products}" />
</h:selectOneMenu>
</p:outputPanel>
<h:form>
</ui:composition>
豆:
@ManagedBean
@ViewScoped
public class Bean implements Serializable{
@EJB
private PublicService publicService;
private List<Tab> tabs;
private List<Product> products;
private Product product;
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();
@PostConstruct
public void init(ValueChangeEvent event) {
String newValue = (String) event.getNewValue();
sessionMap.remove("sessionProduct");
sessionMap.put("sessionProduct", (String) event.getNewValue());
this.product = publicService.getSpecificProduct((String) event.getNewValue()); // returns Product Object
this.tabs = publicService.getAllTabs(); // returns List<Tab> to be displayed in pageBean.page
}
お時間をいただきありがとうございます。