Java 如何将spring MVC jsp页面绑定到两个类
我有两个班:个人和护照。Passport有foreignkey=personid 这是我的控制器Java 如何将spring MVC jsp页面绑定到两个类,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,我有两个班:个人和护照。Passport有foreignkey=personid 这是我的控制器 model.addAttribute("personAttribute", new Person()); JSP页面 <form:form modelAttribute="personAttribute" method="POST" action="${saveUrl}"> <table> <tr> <td&
model.addAttribute("personAttribute", new Person());
JSP页面
<form:form modelAttribute="personAttribute" method="POST" action="${saveUrl}">
<table>
<tr>
<td><form:label path="firstName">First Name:</form:label></td>
<td><form:input path="firstName"/></td>
<td><form:errors path="firstName"/>gfgf</td>
</tr>
<td><form:label path="country_issue">Passport:</form:label></td>
<td><form:input path="country_issue"/></td>
<td><form:errors path="country_issue"/></td>
我建议您创建一个类,将GUI表单映射为1:1,然后编写一个转换器/验证器。理想情况下,这个类应该是GUI元素的包私有类(甚至可能是内部类),这样它就不会与DAO对象混合,例如
Person
或Passport
我建议您创建一个映射GUI表单1:1的类,然后编写一个转换器/验证器。理想情况下,该类应该是GUI元素的包私有类(甚至可能是内部类),这样它就不会与DAO对象(如Person
或Passport
等)混合使用诸如TransferObject是表示页面数据绑定要求的ModelObject之类的类来管理UI数据。如果我们这样做,我们可以将关注点转移到控制器上,从UI对象中提取spring(持久)对象
如果该对象名为PassportForm,则PassportForm.person()和PassportForm.Passport()方法应为您提供持久对象。通过这种方式,我们还可以消除对transformer/validator类的需求,并将行为推送到对象中。UI数据最好使用TransferObject之类的类来管理,这些类表示页面数据绑定需求。如果我们这样做,我们可以将关注点转移到控制器上,从UI对象中提取spring(持久)对象
如果该对象名为PassportForm,则PassportForm.person()和PassportForm.Passport()方法应为您提供持久对象。通过这种方式,我们还可以消除对transformer/validator类的需求,并将行为推送到对象中。您所要做的就是将表单支持对象包装到表单中:
public class MyForm
{
private final Person person;
private final Passport passport;
public MyForm()
{
this.person = new Person();
this.passport = new Passport();
}
public MyForm(Person person, Passport passport)
{
this.person = person;
this.passport = passport;
}
// getters & setters
}
然后在控制器中:
model.addAttribute("myForm", new MyForm());
或者你也可以
model.addAttribute("myForm", new MyForm(personService.findPerson(1), passportService.findPassport(1)));
在jsp中:
<form:form modelAttribute="myForm" method="POST" action="${saveUrl}">
<table>
<tr>
<td><form:label path="person.firstName">First Name:</form:label></td>
<td><form:input path="person.firstName"/></td>
<td><form:errors path="person.firstName"/>gfgf</td>
</tr>
<tr>
<td><form:label path="passport.country_issue">Passport:</form:label></td>
<td><form:input path="passport.country_issue"/></td>
<td><form:errors path="passport.country_issue"/></td>
<tr/>
</table>
</form>
名字:
玻璃纤维生长因子
护照:
只需将表单支持对象包装到表单中:
public class MyForm
{
private final Person person;
private final Passport passport;
public MyForm()
{
this.person = new Person();
this.passport = new Passport();
}
public MyForm(Person person, Passport passport)
{
this.person = person;
this.passport = passport;
}
// getters & setters
}
然后在控制器中:
model.addAttribute("myForm", new MyForm());
或者你也可以
model.addAttribute("myForm", new MyForm(personService.findPerson(1), passportService.findPassport(1)));
在jsp中:
<form:form modelAttribute="myForm" method="POST" action="${saveUrl}">
<table>
<tr>
<td><form:label path="person.firstName">First Name:</form:label></td>
<td><form:input path="person.firstName"/></td>
<td><form:errors path="person.firstName"/>gfgf</td>
</tr>
<tr>
<td><form:label path="passport.country_issue">Passport:</form:label></td>
<td><form:input path="passport.country_issue"/></td>
<td><form:errors path="passport.country_issue"/></td>
<tr/>
</table>
</form>
名字:
玻璃纤维生长因子
护照: