Spring MVC一对多表单提交
我有一个类“Info”,它包含用户的信息,如姓名、出生日期、电子邮件 我还有另一个名为“Address”的类,它包含用户的地址信息 信息类与地址有一对多关系。因此Info类有一个地址列表。例如:列表<地址>添加列表 现在我想有一个表单,这样用户可以把他们的信息。在表单中,用户将输入他们的信息类信息和地址类信息。我试图创建一个jsp页面,从用户那里获取所有参数,但是在这个jsp页面上出现了错误Spring MVC一对多表单提交,spring,spring-mvc,Spring,Spring Mvc,我有一个类“Info”,它包含用户的信息,如姓名、出生日期、电子邮件 我还有另一个名为“Address”的类,它包含用户的地址信息 信息类与地址有一对多关系。因此Info类有一个地址列表。例如:列表添加列表 现在我想有一个表单,这样用户可以把他们的信息。在表单中,用户将输入他们的信息类信息和地址类信息。我试图创建一个jsp页面,从用户那里获取所有参数,但是在这个jsp页面上出现了错误 <c:forEach items="info.addList" var="address" varStat
<c:forEach items="info.addList" var="address" varStatus="status">
<div class="form-group" >
<form:label path="address.address1">Street Name</form:label>
<form:input path="address.address1" cssClass="form-control"/>
</div>
<div class="form-group">
<form:label path="address.address2">Apt/Suite</form:label>
<form:input path="address.address2" cssClass="form-control"/>
<div>
<div class="form-group">
<form:label path="address.city">City</form:label>
<form:input path="address.city" cssClass="form-control"/>
</div>
</c:forEach>
org.springframework.beans.NotReadablePropertyException: Invalid property 'address' of bean class [ com.ttg.mvc.beans.Info]: Bean property 'address' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:725)
这是该url显示注册表单的请求映射
@RequestMapping("/register")
public String showRegistrationForm(Model model) {
Info info= new Info();
model.addAttribute("info", info);
return "registration";
}
我认为jsp代码应该如下所示,因为
Address
是一个集合,所以我们需要使用index
。索引将是动态的,因为用户可以添加更多地址,或者您希望以任何方式维护它
<c:forEach items="info.addList" var="address" varStatus="status">
<div class="form-group" >
<form:label path="address[0].address1">Street Name</form:label>
<form:input path="address[0].address1" cssClass="form-control"/>
</div>
<div class="form-group">
<form:label path="address[0].address2">Apt/Suite</form:label>
<form:input path="address[0].address2" cssClass="form-control"/>
<div>
<div class="form-group">
<form:label path="address[0].city">City</form:label>
<form:input path="address[0].city" cssClass="form-control"/>
</div>
</c:forEach>
街道名称
公寓/套房
城市
地址是集合,您必须借助JSP上的索引进行访问
<c:forEach items="info.addList" var="address" varStatus="status">
<div class="form-group" >
<form:label path="address[status.index].address1">Street Name</form:label>
<form:input path="address[status.index].address1" cssClass="form-control"/>
</div>
<div class="form-group">
<form:label path="address[status.index].address2">Apt/Suite</form:label>
<form:input path="address[status.index].address2" cssClass="form-control"/>
<div>
<div class="form-group">
<form:label path="address[status.index].city">City</form:label>
<form:input path="address[status.index].city" cssClass="form-control"/>
</div>
</c:forEach>
街道名称
公寓/套房
城市
请指出您的错误,@Robinson Rossishow告诉我们您的信息和地址代码,我想问题就在这里,您可能会感兴趣(如何实现动态子表单,这与在一种形式中具有一对多关系相同)我尝试了这种方法,但上面提到的错误响应你们两个都是对的。在将Info的模型对象发送到JSP之前,我只需要在Info类中添加一个地址列表。该列表包含Address类的一个新对象。这是一点工作,但现在很好。我用上面提到的指导和完善。谢谢我试过这种方法,但是上面提到的错误响应你们两个都是对的。在将Info的模型对象发送到JSP之前,我只需要在Info类中添加一个地址列表。该列表包含Address类的一个新对象。这是一点工作,但现在很好。我用上面提到的指导和完善。谢谢@如果问题解决了,请接受答案或投票。
<c:forEach items="info.addList" var="address" varStatus="status">
<div class="form-group" >
<form:label path="address[0].address1">Street Name</form:label>
<form:input path="address[0].address1" cssClass="form-control"/>
</div>
<div class="form-group">
<form:label path="address[0].address2">Apt/Suite</form:label>
<form:input path="address[0].address2" cssClass="form-control"/>
<div>
<div class="form-group">
<form:label path="address[0].city">City</form:label>
<form:input path="address[0].city" cssClass="form-control"/>
</div>
</c:forEach>
<c:forEach items="info.addList" var="address" varStatus="status">
<div class="form-group" >
<form:label path="address[status.index].address1">Street Name</form:label>
<form:input path="address[status.index].address1" cssClass="form-control"/>
</div>
<div class="form-group">
<form:label path="address[status.index].address2">Apt/Suite</form:label>
<form:input path="address[status.index].address2" cssClass="form-control"/>
<div>
<div class="form-group">
<form:label path="address[status.index].city">City</form:label>
<form:input path="address[status.index].city" cssClass="form-control"/>
</div>
</c:forEach>