저는 JSF를 처음 접했고 프로젝트를위한 유용성 여부를 결정하기위한 개념 증명을 시도했습니다. 내 POC는 단순히 일부 데이터가 포함 된 테이블이있는 단일 페이지로 구성됩니다.동적 열을 사용하는 DataTable
페이지 수를 렌더링하기 전에 데이터베이스의 열 수와 행 수는 동적입니다. 내가 예상대로 다음과 같이
, 나는 행의 적절한 수의 두 정적 열을 얻을 : 내가하고 싶었던 무엇<h:dataTable id="data" value="#{viewDataBean.dataRows}" var="row">
<h:column>
<f:facet name="header">
<h:outputText value="Col 1"/>
</f:facet>
<h:outputText value="#{row.values[0].value}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Col 2"/>
</f:facet>
<h:outputText value="#{row.values[1].value}"/>
</h:column>
</h:dataTable>
이 <h:column>...</h:column>
태그의 단일 세트 주위에 <c:forEach...>
을 추가했다 , 열 수 반복하는,하지만 작동하지 않았다 - 나는 다양한 조합을 시도,하지만 난 일을 이런 식으로 뭔가를 기다리고 있었다 : 인터넷 검색에서
<h:dataTable id="data" value="#{viewDataBean.dataRows}" var="row">
<c:forEach items="#{row.values}" var="val">
<h:column>
<f:facet name="header">
<h:outputText value="Col 1"/>
</f:facet>
<h:outputText value="#{val.value}"/>
</h:column>
</c:forEach>
</h:dataTable>
을, 나는 다양한 모호한 의견을 읽었습니다 '그걸하는 방법이 아니야'처럼 나는 옳은 길에 대해 특별히 설득력있는 예를 찾을 수 없었습니다. 누군가가 Backing bean에 DataTable을 빌드하는 것에 대해 언급했지만, 찾을 수있는 유일한 예는 http://forums.sun.com/thread.jspa?threadID=577589입니다. 그것은 효과가 있었지만, 사용 된 방법 중 일부가 사용되지 않기 때문에 다소 어색해했습니다.
핵심 JSF 이외의 라이브러리를 사용할 수있는 가능성은 희박하지만, 꼭 필요한 경우 변경 될 수 있습니다. 누구든지 올바른 방법으로 빛을 발산 할 수 있습니까? 그것은 꽤 간단해야하는 것처럼 보입니다. 그래서 저는 분명히 뭔가 빠져 있다는 것을 확신합니다.