2010-05-03 4 views
2

<rich:datatable/>과 같은 기존 JSF 구성 요소를 확장하려고한다고 가정 해 보겠습니다. 내 주요 요구 사항은 콘텐츠를 변경하려면 <f:facet>의 콘텐츠를 동적으로 수정하는 것입니다.사용자 지정 구성 요소에서 패싯의 내용을 동적으로 변경하는 방법?

그 목표를 달성하는 가장 좋은 방법은 무엇입니까? 또는 여기서은 코드를 구현하는 가장 좋은 장소입니다. 내 faces-config.xml에서

, 나는 다음과 같은 선언했다 : 당신이 볼 수 그래서

<facelet-taglib> 
    <namespace>http://my.project/jsf</namespace> 
    <tag> 
     <tag-name>dataTable</tag-name> 
     <component> 
      <component-type>my.component.dataTable</component-type> 
      <renderer-type>my.renderkit.dataTable</renderer-type> 
     </component> 
    </tag> 

, 내가 가진 : (나는 Facelets의를 사용할 때)처럼 보이는

또한
<faces-config> 
    ... 
    <component> 
     <component-type>my.component.dataTable</component-type> 
     <component-class>my.project.component.table.MyHtmlDataTable</component-class> 
    </component> 
    ... 
    <render-kit> 
     <render-kit-id>HTML_BASIC</render-kit-id> 
     <renderer> 
      <component-family>org.richfaces.DataTable</component-family> 
      <renderer-type>my.renderkit.dataTable</renderer-type> 
      <renderer-class>my.project.component.table.MyDataTableRenderer</renderer-class> 
     </renderer> 
     ... 

, 내 my-project.taglib.xml 파일을 내 맞춤 데이터 테이블에 대한 내 프로젝트의 두 클래스 : MyHtmlDataTableMyDataTableRenderer. 내 생각 중 하나는 내 렌더러의 doEncodeBegin() 메서드에서 <f:facet>의 내용을 직접 수정하는 것입니다. 이것은 작동하고 있습니다 (사실 almost working).하지만 제 수정을 달성하기에 더 좋은 곳이라고는 생각하지 않습니다.

당신은 어떻게 생각하십니까?

기술 정보 : JSF 1.2 Facelets에, 나는 당신이 getFacet(facetName)를 호출하고 반환 구성 요소에 수정을 할 수 있습니다 생각, 자바 1.6

답변

0

을 3.3.2 Richfaces.

getFacets() (및/또는 getFacet(..))을 재정의하고 super 메서드를 호출 한 다음 반환 된 값을 수정 한 다음 반환 할 수 있습니다.

+0

그래, 그게 내가하는 일이야.하지만 내 질문은 내가 어디에서해야 하는지를 아는거야. 왜냐하면 순간적으로 RENDER_VIEW 단계에서 렌더러 클래스에 대한 수정을 수행하지만이 솔루션에 완전히 만족하지는 않습니다 ... – romaintaz

+0

내 업데이트 참조. – Bozho

관련 문제