我有一个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);

10-06 05:08