사용자가 원하는대로 항목을 고정하고 제거 할 수있는 동적 대시 보드를 사용하고 있습니다. 이제는 기존의 복합 컴포넌트를 백업 빈의 뷰에 추가하고 싶다는 문제점이 있습니다. 나는 인터넷에서 이것을하는 정확한 방법을 찾으려고 노력했지만 지금까지는 성공하지 못했다. 여기 프로그래밍 방식으로 백킹 빈에 복합 구성 요소를 만들고 추가합니다.
<?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>
이 복합 구성 요소를 반환해야하는 코드입니다 :
Column column = new Column();
UIComponent test = HtmlUtil.getCompositeComponent("test.xhtml", "comp");
column.getChildren().add(test);
: 여기
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;
}
을 그리고이 기능을 사용하고 어떻게되어 여기에 추가 할 단순 복합 구성 요소입니다
그러나 아무 것도 열 안에 렌더링되지 않습니다. 이것이 어떻게 이루어질 수있는 아이디어가 있습니까? 렌더링 된 = "# {bean.isThisRendered}"방식으로 사용하고 싶지 않습니다. 사용 방식에 맞지 않기 때문입니다.
관심 (주제 끔찍하게 잘못 적용되며이 나에게 앞으로 광년을 가져올 것) 중 다음과 같이
따라서, 특정 예에서 사용 'HtmlUtil.getCompositeComponent'를 호출하는 3- 라이너? –