[英]JSF 2.0 backing bean method not executed for programmatically created UI element
[英]Programmatically create an <ui:include src=“…”/> in backing bean
在JSF頁面中,我有:
<h:form id="form">
<h:panelGroup id="content" layout="block"/>
</h:form>
在Java SessionScoped bean中,我有一個方法:
public void fillContent()
{
UIComponent content = FacesContext.getCurrentInstance().getViewRoot().findComponent("form:content");
content.getChildren().clear();
content.getChildren().add(/*New <ui:include src="Page.xhtml"/>*/);
}
將<ui:include src="Page.xhtml"/>
作為content
子級插入的Java代碼是什么? 在哪里可以找到所有JSF Java名稱映射的列表?
謝謝
不幸的是ui:include被實現為標簽處理程序。 這意味着在構建組件樹並且沒有相應的UIComponent類時對其進行評估和執行。
為了實現您的目標,您必須在保留對在構造樹期間可訪問的faceletContext的引用之后,使用javax.faces.view.facelets.FaceletContext#includeFacelet之類的facelets API。 這不是一個簡單的方法,我強烈建議改寫您的問題並尋找其他解決方案。
我不知道任何有關標簽組件/處理程序映射的官方指南,但是我敢肯定,“ Core Java Server Faces”之類的書籍會對此有所幫助。
您可以嘗試從facelets入手,例如:
<h:form id="form">
<ui:include src="#{content.path}"/>
</h:form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.