2013-05-16 3 views
1
<h:dataTable value="#{SearchingBeans.list}" var="entry"> 
     <h:column> 
      <f:facet name="header"> 
       <h:outputLabel>Photo</h:outputLabel> 
      </f:facet> 
     </h:column> 
     <h:column> 
      <f:facet name="header"> 
       <h:outputLabel>Pseudo</h:outputLabel> 
      </f:facet> 
      <h:outputLabel value="#{entry.pseudo}"></h:outputLabel> 
     </h:column> 
     <h:column> 
      <f:facet name="header"> 
       <h:outputLabel>Description</h:outputLabel> 
      </f:facet> 
      <h:outputLabel value="#{entry.description}"></h:outputLabel> 
     </h:column> 
     <h:column> 
      <f:facet name="header"> 
       <h:outputLabel>Photo</h:outputLabel> 
      </f:facet> 
      <h:outputLabel value="#{entry.photo[0].path}"></h:outputLabel> <-- this a List 
     </h:column> 
    </h:dataTable> 

데이터 테이블 내가 그의 재산 중 하나가 GET와 목록의 사진입니다 단체 회원을 가지고/속성 내가 JSF에 그 값을 가져 오는 방법을 모르는 을 채우는 것을 설정 그들의 2-3 사진을 가지고 있기 때문에 나는 각 회원에 대한 첫 사진 만 원한다. 그것 가능한? 다른 해결책은 감사 할 것입니다.으로 반복 :

+0

만약 당신이'list' 타입의'entry.list'를 가지고 있다면, 당신은 그 아이디어를 얻었 으면'empty'로 그 내용을 검사하고'[0]'으로 첫번째 요소에 접근 할 수 있습니다. 정확히. – skuntsel

답변

6

일반적인 방법으로 <ui:repeat> 또는 <h:dataTable>을 사용하여 반복하십시오. 서로 반복되는 여러 구성 요소를 중첩하는 것이 완전히 유효합니다. <h:dataTable>의 경우 중첩 된 반복 구성 요소를 <h:column> 안에 넣어야합니다.

예.

<h:dataTable value="#{bean.entities}" var="entity"> 
    <h:column> 
     #{entity.property} 
    </h:column> 
    <h:column> 
     <ui:repeat value="#{entity.subentities}" var="subentity"> 
      #{subentity.property} 
     </ui:repeat> 
    </h:column> 
</h:dataTable> 

또는

<h:dataTable value="#{bean.entities}" var="entity"> 
    <h:column> 
     #{entity.property} 
    </h:column> 
    <h:column> 
     <h:dataTable value="#{entity.subentities}" var="subentity"> 
      <h:column> 
       #{subentity.property} 
      </h:column> 
     </h:dataTable> 
    </h:column> 
</h:dataTable> 

인 Mojarra의 이전 버전을 사용하는 동안 둥지 여러 <ui:repeat> 구성 요소와 그 안에 <f:ajax>을 사용할 때 잠재적으로 만 문제로 실행됩니다. JSF 반복 구성 요소 내에 중첩 할 때 이유가 구체적인 문제에 여기 JSTL in JSF2 Facelets... makes sense?


관련없는 설명을 위해

만 JSTL <c:forEach>이 작동하지 않을 것, 순수한 텍스트 프리젠 테이션 <h:outputLabel>을 남용하지 마십시오. label an input elementfor 속성으로 의도 된 HTML <label> 요소를 생성합니다. 그러나 코드에서 아무 것도하지 않습니다. 대신 <h:outputText>을 사용해야합니다. 그건 그렇고, 최근에 나는 이것을 더 자주 스타터 코드로보고 있습니다. <h:outputText> 대신에 <h:outputLabel>을 악용하는 나쁜 자습서 나 리소스 또는 템플릿 텍스트의 일반 EL이 있어야합니다. 어떤 자습서/자료를 사용하고 계셨습니까? 그런 다음 나는이 심각한 오판에 관해서 저자에게 연락 할 수있다. 또한 Purpose of the h:outputLabel and its "for" attribute

+0

내 선생님이 사용하라고 말한 진실을 말하면 ..... ..... – DarkVision

+0

기본 HTML을 배우려면 선생님에게 시간을 들여달라고 부탁하십시오. 그는 HTML 의미론에 대해 아무것도 모릅니다. – BalusC

+0

@BalusC '이 심각한 오판에 대해 저자에게 연락 할 수 있습니다. 정말 대단한 아이디어입니다. 그리고 당신은 그것에 대해 정말로 독창적입니다. 아마도 로진 디아와 같이 유명한 JSF 관련 사이트 중 하나일까요? – skuntsel