您只需要确保下面的元素
<input type="hidden" value="${person.role}" name="person_type" />
将其命名属性更改为person
<input type="hidden" value="${person.role}" name="person" />
使其与控制器中的model属性匹配
public String editPersonPost (@PathVariable Integer personId, @Valid @ModelAttribute ( "person") Person person, BindingResult result)
这就是它的工作方式。
当接收到请求并且Spring需要创建model属性时,它将检查该属性是否已经存在。如果它不存在并且没有匹配名称的请求参数,它将使用参数类的默认构造函数创建一个新对象
如果存在并且匹配参数类型,它将继续绑定请求参数。如果不兼容或具有相同名称的请求参数,它将尝试找到能够将当前值转换为所需类型的转换器。
如果转换成功,它将请求参数绑定到结果,否则将引发异常
在您的情况下,person属性作为字符串发送。Spring将尝试将其转换为Person。在绑定之前,它将选择PersonConverter进行转换为适当的子类
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)