【发布时间】:2017-02-14 23:14:05
【问题描述】:
我在使用多个数据库表时遇到问题 我有什么:
输入:用户(表用户) 输入字段:Email(表用户) 输入:Bookingnumber(表格Bookingnumber)
仅使用“用户”表单的输入字段有效,从其他表添加 bookingnumber 会引发此错误:
Invalid target for Validator [shuttleservice.form.validator.UserFormValidator@1588512]: shuttleservice.form.model.Bookingnumber@18d7616
问题类似于 How insert values to multiple tables using spring and hibernate
和 Invalid target for Validator in spring error?
我只有两种形式 一个输出,仅显示 db 数据 一个输入,包含多个数据库表的字段
我应该使用多个验证器吗?
// show add user form
@RequestMapping(value = "/users/add", method = RequestMethod.GET)
public String showAddUserForm(Model model) {
logger.debug("showAddUserForm()");
User user = new User();
Bookingnumber bookingnumber = new Bookingnumber();
// set default value
user.setName("setNewUserName");
user.setEmail("test123@gmail.com");
bookingnumber.setBookingnumber("123.456");
model.addAttribute("userForm", user);
//model.addAttribute("bookingnumberForm", bookingnumber);
model.addAttribute("userForm", bookingnumber);
populateDefaultModel(model);
System.out.println("#8");
return "users/userform";
}
【问题讨论】:
-
也许可以解决。有两个验证器,每个用于每个 db 表,控制器中有两个 initBinder。但我不明白为什么我需要一个以上的验证器...它是一个 *.jsp,带有要检查的输入字段。这对我来说是代码膨胀,我以后会有 ~6 个表 -> 6 个验证器类 +1 个用于电子邮件表达式检查的验证器 + 更多用于其他动态内容
标签: java spring validation multiple-tables