2011-09-21 2 views
3

질문 및 관련 답변을 가져 오려고합니다. 질문을 잘 할 수 있지만 중첩 된 데이터 테이블은 각 대답에있는 속성을 인식하지 못하기 때문에 IDE에서도이를 지적합니다. 어쩌면 이것이 올바른 방법이 아닐지도 모릅니다. 각 질문과 관련된 답변을 반복하려면 어떻게합니까?JSF 2.0의 중첩 된 데이터 테이블

<h:dataTable value="#{questionBacking.recentlyAskedQuestions}" var="questions" 
       rendered="#{questionBacking.recentlyAskedQuestions.size() > 0}" 
       border="1"> 

       <h:column> 

        <h:outputText value="#{questions.questionTitle}" /> 

        <br/> 
        <h:outputText value="#{questions.questionBody}" /> 

       </h:column> 

       <h:dataTable value="#{questions.answers}" var="answers"> 
       <tr> 
        <h:outputText value="#{answers.answer}" /> 
       </tr> 


       </h:dataTable> 

    </h:dataTable> 

답변

7

당신은 <h:column> 내부의 열을 넣어해야합니다.

<h:dataTable value="#{questionBacking.recentlyAskedQuestions}" var="question" rendered="#{not empty questionBacking.recentlyAskedQuestions}"> 
    <h:column> 
     <h:outputText value="#{question.questionTitle}" /> 
     <br/> 
     <h:outputText value="#{question.questionBody}" /> 
    </h:column> 
    <h:column> 
     <h:dataTable value="#{question.answers}" var="answer"> 
      <h:column> 
       <h:outputText value="#{answer.answer}" /> 
      </h:column> 
     </h:dataTable> 
    </h:column> 
</h:dataTable> 

(내가 좀 더 자기 문서화 될하기 위해 renderedvar 속성을 변경, 당신은뿐만 아니라 있도록 각각 title, bodybodyquestionTitle, questionBodyanswer의 이름을 변경 할 수 있습니다 주

+0

answers.answer는 getAnswer()를 호출해야하지만 편집기는 여전히 실제로 "대답"을 속성으로 나열하지 않습니다. IDE의 제안에도 불구하고 나는 그것을 거기에 넣었지만 아직도 대답을 얻지는 못한다. 그것은 빈 열을 보여준다. – Onur

+0

그런 다음 문제는 다른 문제로 인해 발생합니다. 아마도 대답이 없습니까? 속성 이름이 잘못되면 어쨌든'PropertyNotFoundException'을 얻었을 것입니다. – BalusC

+0

로 바꾸더라도 여전히 오류가 없습니다. Answer 엔티티 클래스에서 getAnswer가 정의되었으므로 실제로 이상합니다. – Onur

0

PrusFaces를 사용하여 BalusC의 답변에서 언급 한 것과 똑같은 작업을 수행 할 수 있습니다. <h:dataTable><p:dataTable>으로 바꾸면 열 태그에도 동일하게 적용됩니다. PrimeFaces로 중첩 된 데이터 테이블을 생성 할 수 있습니다. PrimeFaces를 사용하는 사람들에게 사람들이 CSS 정의 작성/수정에 소요되는 시간을 줄이기를 권장합니다.

관련 문제