我正在使用動態儀表板,用戶可以根據需要固定和刪除項目。現在我有一個問題,我想從支持bean中將現有的複合組件添加到視圖中。我試圖找到從互聯網上做到這一點的正確方法,但迄今爲止沒有成功。下面是簡單的複合組件我想補充:以編程方式在支持bean中創建和添加複合組件
<?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:cc="http://java.sun.com/jsf/composite"
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"
xmlns:composite="http://java.sun.com/jsf/composite">
<!-- INTERFACE -->
<cc:interface>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<h:outputText value="TEST"/>
</cc:implementation>
</html>
這裏是一個要返回複合組件的代碼:
public static UIComponent getCompositeComponent(String xhtml, String namespace) {
FacesContext fc = FacesContext.getCurrentInstance();
Application app = fc.getApplication();
Resource componentResource = app.getResourceHandler().createResource(xhtml, namespace);
UIPanel facet = (UIPanel) app.createComponent(UIPanel.COMPONENT_TYPE);
facet.setRendererType("javax.faces.Group");
UIComponent composite = app.createComponent(fc, componentResource);
composite.getFacets().put(UIComponent.COMPOSITE_FACET_NAME, facet);
return composite;
}
,這裏是我如何使用功能:
Column column = new Column();
UIComponent test = HtmlUtil.getCompositeComponent("test.xhtml", "comp");
column.getChildren().add(test);
但是在列內沒有任何內容。任何想法如何做到這一點?我不想用render =「#{bean.isThisRendered}」的方式,因爲它不適合我的用例。
出於興趣(題目是可怕的嚴重覆蓋,這會給我帶來前進光年):你在哪裏調用
所以,在你的具體的例子,按如下方式使用它3行調用'HtmlUtil.getCompositeComponent'? – 2017-06-21 16:27:56