首页 > 解决方案 > Thymeleaf 形式的 forEach 未发布结果

问题描述

我有表格:

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

标签: javaspringspring-mvcthymeleaf

解决方案


推荐阅读