Вложенные данные в JSF 2.0 - PullRequest
       8

Вложенные данные в JSF 2.0

4 голосов
/ 21 сентября 2011

Я пытаюсь получить вопросы и связанные с ними ответы. Я могу получить вопросы в порядке, но вложенная таблица данных даже не распознает свойства каждого ответа, на что также указывает IDE. Может быть, это не правильный путь. Как перебрать ответы на каждый вопрос?

 <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>

Ответы [ 2 ]

8 голосов
/ 21 сентября 2011

Вам нужно поместить столбцы внутри <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>

(обратите внимание, что я изменил атрибуты rendered и var, чтобы они были немного более самодокументированными,Вы также можете переименовать questionTitle, questionBody и answer в title, body и body соответственно, чтобы не допускать повторения значения)

1 голос
/ 18 сентября 2015

Вы можете сделать то же самое, что указано в ответе BalusC, также используя PrimeFaces. Просто замените <h:dataTable> на <p:dataTable>, то же самое относится и к тегам столбцов. Вы можете создать вложенные данные с помощью PrimeFaces. Я рекомендую людям использовать PrimeFaces, поскольку это уменьшает количество времени, которое люди тратят на написание / изменение определений CSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...