Forms ThymileAF-如何将对象(带子对象)从窗体发送回控制器
我正在尝试将一个“复杂”对象从thymeleaf表单“发送”回控制器。 我发现了这个最小的示例(),它基本上做了相同的事情(工作非常完美)。唯一的区别是,它们的对象具有字符串属性,而不是其他对象 但是,一旦我用bar对象替换String属性,在提交表单时,bar对象总是空的。 提交嵌套对象是否可行 物体Forms ThymileAF-如何将对象(带子对象)从窗体发送回控制器,forms,spring-boot,thymeleaf,Forms,Spring Boot,Thymeleaf,我正在尝试将一个“复杂”对象从thymeleaf表单“发送”回控制器。 我发现了这个最小的示例(),它基本上做了相同的事情(工作非常完美)。唯一的区别是,它们的对象具有字符串属性,而不是其他对象 但是,一旦我用bar对象替换String属性,在提交表单时,bar对象总是空的。 提交嵌套对象是否可行 物体 公共类Foo{ 私人酒吧; 公共酒吧{ 返回杆; } 公共空间立根杆(杆){ 这个.bar=bar; } } 公共类酒吧{ 私有字符串id; 公共栏(字符串id){ this.id=id; }
公共类Foo{
私人酒吧;
公共酒吧{
返回杆;
}
公共空间立根杆(杆){
这个.bar=bar;
}
}
公共类酒吧{
私有字符串id;
公共栏(字符串id){
this.id=id;
}
公共字符串getId(){
返回id;
}
公共无效集合id(字符串id){
this.id=id;
}
}
控制器
@RequestMapping(value=“/showForm”,method=RequestMethod.GET)
公共字符串显示窗体(模型){
Foo-Foo=新的Foo();
foo.立根杆(新杆(“测试”));
model.addAttribute(“foo”,foo);
返回页面。测试;
}
@RequestMapping(value=“/processForm”,method=RequestMethod.POST)
公共字符串processForm(@modeldattribute(value=“foo”)foo-foo){
...
返回页面。测试;
}
HTML
您必须将输入文本绑定到
bar
对象的id
字段
bar对象中id字段缺少绑定是一个问题。另一个是Bar.class中的构造函数。绑定'id'后导致此异常:
NullValueInTestedPathException:bean类[Foo]的属性'bar'无效:无法实例化属性类型[bar]以自动增长嵌套属性路径;嵌套异常为java.lang.NoSuchMethodException:Bar。()
在向其工作的Bar.class添加默认构造函数后。