java - thymeleaf post 后,对象的 Set<T> 属性变为 null

标签 java spring spring-mvc thymeleaf

我有一个 DTO,其中包含一组另一个 DTO。将其传递到 thymeleaf 模板中是没有问题的。但是我如何从模板中检索它?

现在设置的属性始终为空

DTO:

public class Partner{
    @Id
    Long id;

    Set<Account> accounts;
}

public class Account{
    @Id
    Long id;

    String name;
}

模板:

<form method="POST" th:object="${partner}" th:action="@{/postmystuff}">
    <div th:each="acc : *{accounts}">
        <input type="text" th:field="${acc}" />
    </div>
    <button type="submit">send</button>
</form>

Controller :

@Controller
public class SomeController{
    //...
    @GetMapping("/")
    public String getMySite(Model m){
        Partner p = new Partner(accounts); //accounts is a set of 10 accounts
        m.addAttribute("partner", p);
        return "mytemplate";
    }

    @PostMapping("/postmystuff")
    public String postMyStuff(@ModelAttribute Partner p){
        System.out.println(p); //for now we just print
        return "redirect:/";
    }
}

提交后,它会打印对象的字符串表示形式,但所有属性均为空。

最佳答案

您尚未将 Partner 对象添加到模型中,因此模板无法访问它。在 return 语句之前添加以下行:

m.addAttribute("partner", p);

关于java - thymeleaf post 后,对象的 Set<T> 属性变为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203077/

相关文章:

java - Android 上的 HTTP 请求

java - 自定义存储库的 Spring Data Solr 优先级

java - SpringJUnit4ClassRunner : run test method multiple times with different input data

Spring Boot CORS 过滤器 - CORS 预检 channel 未成功

Java - 我有一个 .get() 实例,但它在 Server.Main.main(Main.java :18)) 处给出错误 java.lang.NullPointerException

java - 如何在JSP中调用方法及其变量?

JavaFX 使用图表图例可以切换显示/隐藏系列吗?

spring - 在 Spring Data JPA 中以 3 种不同的方式创建查询

java - 资源包在 Spring 4.1 中不起作用

java - Spring Controller /组件实现可序列化