我有一个DTO,其中包含一组其他的DTO。将其传递到百里香模板是没有问题的。但是,如何从模板中检索它呢?
现在,set属性始终为null
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
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:/";
}
}
提交后,它将打印对象的字符串表示形式,但是所有属性均为null。
最佳答案
您尚未将Partner
对象添加到模型中,因此模板无法访问该对象。在return
语句之前,添加以下行:
m.addAttribute("partner", p);