2013-03-08 7 views
0

JBoss 5에 배포 된 Seam 2.2 JSF 1.2 애플리케이션이 있습니다. 편집 가능한 복잡한 데이터 테이블이있는 페이지를 만들어야합니다. 데이터는 아래에서 아래로 표시됩니다. 내가 인증 유형이동적 열을 사용하는 편집 가능한 데이터 테이블

Employee { 
    int id; 
    String name; 
    ... 
} 

:

Certs { 
    int id; 
    String certType; 
    ... 
) 

을 나는 직원이 보유 유형의 인증서 표시의 이벤트가 :

Events { 
    int id; 
    int employeeId; 
    int certId; 
    Date start; 
    Date end; 
    ... 
} 

내가 표시 할 필요를

나는 직원이 동적으로 생성 된 인증서 유형 (사용자가 인증서를 선택할 때까지 인증서 열 수를 알 수 없음)에 따른 데이터 여러 인증서 유형이 선택되고 직원이 해당 인증서 유형에 대한 이벤트가없는 경우 해당 인증서 유형의 셀은 비어 있어야합니다. 부자와 데이터 테이블 : 열 및 풍부한 :

Valid XHTML

나는 부자 사용하여 올바른 형식으로 생성 할 수 있습니다 열을, 그러나 그것은 단지 디스플레이의 - 내가 자리에 행을 편집 할 수 있어야합니다.

HtmlDataTable을 사용하여 백업 빈에서 테이블을 생성하려고하는데 Seam이 JSF 바인딩과 잘 작동하지 않습니다.

내 머리를 감싸는 데 가장 어려운 비트는 수직 데이터 (관련 이벤트 정보가있는 직원, 모든 이벤트에 대해 한 행) 수평 (직원 이벤트 이벤트 이벤트)을 작성하는 것입니다.

아무에게도이 방법을 효과적으로 적용하기위한 권장 사항이나 조언이 있습니까?

내가 시도한 것을 게시 하겠지만, 이미 꽤 오래되었으므로 필요한만큼 추가 할 것입니다.

답변

0

나는 결국이 구성 요소를 조합하여이 작업을 수행했습니다. 직원 데이터 행을 하나의 행으로 변환하는 객체를 만들었습니다. 반환 DB에서 데이터 그래서 : 존스 존스 존스

가되다 끝 시작 certtype3

끝 시작 certtype2

끝 시작 certtype1 :

존스 certtype1 (시작, 끝) certtype2 (시작, 끝) certtype3 (시작, 끝)

그리고이 좋아 조직했다

<rich:dataTable id="acadCertList" 
value="#{myCertBean.employeeCertEventObjects}" 
var="_certs" rowKeyVar="row" > 

    <f:facet name="header"> 

<rich:columnGroup> 
    <rich:column> 
     <h:outputText value="Row" /> 
    </rich:column> 
    <rich:column> 
    <h:outputText value="Name" /> 
    </rich:column> 

    <!-- dynamically create the certType1, certType2 … column headers --> 
    <rich:columns value="#{myCertBean.selectedCertTypeList}" 
      var="_selCrtType" colspan="2"> 
     <h:outputText value="#{_selCrtType.certType}" /> 
    </rich:columns> 
</rich:columnGroup> 
</f:facet> 

<rich:subTable value="#{_certs}" var="_cEmpObj"> 
<f:facet name="header"> 
    <!-- repeat start end column headers for each certType --> 

    <rich:columnGroup> 
     <rich:column> 
</rich:column> 
     <rich:column> 
     </rich:column> 
     <c:forEach items="#{myCertBean.selectedCertTypeList}"> 
<rich:column> 
       <h:outputText value="Start" /> 
      </rich:column> 
<rich:column 
       <h:outputText value="End" /> 
      </rich:column> 
</c:forEach> 
    </rich:columnGroup> 
</f:facet> 
<!-- load data for each row --> 

<rich:column id="row_#{row}"> 
    <h:outputText value="#{row+1}" /> 
</rich:column> 
<rich:column id="name_#{row}"> 
    <h:outputText value="#{_cEmpObj.name}/> 
</rich:column> 

<c:forEach items="#{myCertBean.selectedCertTypeList}" varStatus="status"> 
    <rich:column id="curexp_#{status.index}" 
     <h:outputText 
value="#{_cEmpObj.certEventsByCertTypeSysid[status.index].startDate}" /> 
    </rich:column> 
    <rich:column id="curexp_#{status.index}" 
     <h:outputText 
value="#{_cEmpObj.certEventsByCertTypeSysid[status.index].endDate}" /> 
    </rich:column> 
</c:forEach> 

</rich:subTable> 

</rich:dataTable>