Thymeleaf 提交抽象类型的集合

给定一个类:


public class Foo {

    private List<Bar> bars = new ArrayList<>();


    //getter and setter

}

Bar看起来像这样的抽象类型在哪里:


abstract class Bar {

    private TypeEnum type;


    // getters and setters

}

并且给定一个应该提交具体实例的 Thymeleaf 模板(来自包含的自定义片段,具体取决于type枚举值),提交时会收到以下异常


无法实例化 [com.example.Bar]:它是一个抽象类吗?嵌套异常是 java.lang.InstantiationException。


有没有办法指定实例所属的具体类,以便可以创建正确的实例?


波斯汪
浏览 170回答 1
1回答

郎朗坤

您需要以某种方式将类型鉴别器从表单传递给控制器。„disc0=enum&...“ 有了这些信息,您可以在“@ModelAttribute”函数的帮助下实例化 Foo 对象,该函数使用参数准备“bars”列表并返回“foo”实例。这将在实际合并请求处理程序方法中使用的“@ModelAttribute”参数之前发生。public class MyCtrl {&nbsp; @ModelAttribute(„foo“)&nbsp; public Foo initFoo(Request or params) {&nbsp; &nbsp; &nbsp;return builtFoo;&nbsp; }&nbsp; @RequestMapping(...)&nbsp; public String submit(@ModelAttribute(„foo“) Foo foo) {&nbsp; &nbsp; // use the inited and merged foo parameter&nbsp; &nbsp; return templateName;&nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java