forEach в форме Thymeleaf не публикует результаты - PullRequest
0 голосов
/ 27 марта 2019

У меня есть форма:

<body>
    <form action="#" th:action="@{/}" th:object="${wrapper}" method="post">
        <tr th:each="w: ${wrapper.answers}">
            <td><input type="checkbox" th:value="${w.validWithNoun}"></td>
            <td th:text="${descriptor}"/>
            <td th:text="${w.noun}"/><br>
        </tr>
        <input type="submit" value="Submit" />
    </form>
</body>

Но когда я попадаю на страницу поста, результатов нет.

Вот мой контроллер:

@Controller
public class AskController {

    @GetMapping("/")
    public String ask(Model model) throws OWLOntologyCreationException {
        Word word = AskUser.getWords().iterator().next();
        String descriptorLabel = word.getDescriptorLabel();
        Map<String, OWLNamedIndividual> askWords = word.getAskWords();

        List<Answer> answers = new ArrayList<>();
        for (String n : askWords.keySet()) {
            Answer a = new Answer(n);
            answers.add(a);
        }
        AnswerWrapper wrapper = new AnswerWrapper(answers);

        model.addAttribute("wrapper", wrapper);
        model.addAttribute("descriptor", descriptorLabel);

        return "default";
    }

    @PostMapping("/")
    public String askSubmit(@ModelAttribute AnswerWrapper wrapper) {
        System.out.println("RESULTS");
        for (Answer a : wrapper.getAnswers()) {
            System.out.println(a.getNoun());
            System.out.println(a.getValidWithNoun());
        }
        return "result";
    }
}

Я положил отпечаток, чтобы увидеть, что происходит, но нет никаких объектов. На исходной странице в списке было два объекта.

Трассировка стека

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException: null
    at linguistics.AskController.askSubmit(AskController.java:43) ~[classes/:na]
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...