2016-02-01 2 views
2

Итак, у меня есть объект, называемый «StudySet.Java», и он содержит список объектов под названием «Rows.Java». Я пытаюсь представить список строк из thymeleaf, используя th: каждый цикл, и каждая строка имеет строку с именем «question» и строку с именем «answer». Однако всякий раз, когда я пытаюсь представить список, получая строки из этого учебного набора и добавляя его к модели, существует бесконечный цикл вопросов и ответов.Thymeleaf Th: Каждый бесконечный цикл, с Spring MVC

Я поставлю код моего контроллера и мою html-страницу, и если кто-нибудь сможет увидеть, где я ошибаюсь, это было бы здорово. Спасибо заранее, и если кто-то захочет увидеть больше кода, просто дайте мне знать.

Контроллер

@Controller 
public class StudySetController { 
private StudySetRepository studySetRepo; 

@RequestMapping(value="studySet/{studySetId}", method=RequestMethod.GET) 
public String addPostGet (@PathVariable Long studySetId, ModelMap model) 
{ 
    StudySet studySet = studySetRepo.findOne(studySetId); 
    model.put("studySet", studySet); 
    List<Row> rows = studySet.getRows(); 
    model.put("rows", rows); 

    return "studySet"; 
} 
@Autowired 
public void studySetRepo(StudySetRepository studySetRepo) { 
    this.studySetRepo = studySetRepo; 
} 
} 

Html Таблица/Th: Каждый цикл

<div class="row row-centered"> 
     <div class="col-md-5 col-centered" style="padding-top:50px;"> 
      <div class="panel panel-default user-form"> 
       <div class="panel-heading"> 
        <h4><span th:text="${studySet.title}"></span></h4> 
       </div> 
       <div class="panel-body"> 
        <table class="table table-bordered"> 
        <tr th:each="row : *{rows}" th:object="${row}"> 
         <td> 
         <p><span th:text="${row.answer}"></span></p> 
         <p><span th:text="${row.question}"></span></p> 
         </td> 
         </tr> 
        </table> 
       </div> 
     </div> 
    </div> 
    </div> 

    <div th:if = "${#lists.isEmpty(rows)}"> 
     <div style="float: left;"> 
     There are no rows to display.<br/> 
     </div> 
    </div> 

Вот и фотография моей фактической странице, вы не можете видеть все, но список можно продолжать в течение длительного времени , и у меня есть две строки, назначенные этому набору исследований, которые просто повторяются с фиктивной информацией.

enter image description here

UPDATE

Оказывается, что мой вопрос, что происходит на стороне Java, потому что, когда я отладки, две строки, которые назначены на съемочную исследования просто повторяют. Однако я понятия не имею, почему это происходит.

ответ

0

Моя проблема заключалась в том, что в моем объекте домена Rows возвращается в StudySet как List, и я не знаю, почему, но это причиняло цикл, как только я включил его в HashSet моя проблема была решена.

+0

SET не содержит дубликатов, а List имеет. Таким образом, у вас, вероятно, было много дубликатов. –

1

Попробуйте изменить:

<tr th:each="row : *{rows}" th:object="${row}"> 

к:

<tr th:each="r : ${rows}"> 
    <td> 
    <p><span th:text="${r.answer}"></span></p> 
    <p><span th:text="${r.question}"></span></p> 
    </td> 
</tr> 

Кроме того, вы уверены, что StudySet имеет правильное количество Rows?

+0

Я изменил его, и он все еще делает то же самое. Также, что вы имеете в виду, имеет ли 'StudySet' правильное количество строк? Я немного смущен. Не имеет значения, сколько «строк», потому что оно должно проходить через каждую строку, правильно? – dochsner

+0

да, но вы уверены, что у него нет дублированных значений ??? –

+0

Я использую Toad для MySQL, и я вижу только две строки, которые назначены этому конкретному «StudySet», поэтому я думаю, что я должен быть в порядке. Также я смущен, потому что у меня много других: каждый цикл в моем приложении, и это единственное, что вызывает у меня проблемы. – dochsner

Смежные вопросы