0
我使用Spring 3 MVC(3.0.1發佈)。我有一個bean類Customer和一個CustomerForm類,如下所示。無法使用表單提交表單數據:輸入
public class Contact {
private String firstname;
private String lastname;
private String email;
private String phone;
//getters and setters
}
public class ContactForm {
private List<Contact> contacts;
//getters and setters
}
從春天控制器我填充觸點和設置如下所示
private static List<Contact> contacts = new ArrayList<Contact>();
static {
contacts.add(new Contact("Barack", "Obama", "[email protected]", "147-852-965"));
contacts.add(new Contact("George", "Bush", "[email protected]", "785-985-652"));
contacts.add(new Contact("Bill", "Clinton", "[email protected]", "236-587-412"));
contacts.add(new Contact("Ronald", "Reagan", "[email protected]", "369-852-452"));
}
@RequestMapping(value = "/get", method = RequestMethod.GET)
public ModelAndView get() {
ContactForm contactForm = new ContactForm();
contactForm.setContacts(contacts);
return new ModelAndView("add_contact" , "contactForm", contactForm);
}
在JSP我顯示它如以下爲可編輯的形式,它建模,
<form:form method="post" action="save.html" modelAttribute="contactForm">
<table>
<tr>
<th>No.</th>
<th>Name</th>
<th>Lastname</th>
<th>Email</th>
<th>Phone</th>
</tr>
<c:forEach items="${contactForm.contacts}" var="contact" varStatus="status">
<tr>
<td align="center">${status.count}</td>
<td><form:input path="contacts[${status.index}].firstname"/></td>
<td><form:input path="contacts[${status.index}].lastname"/></td>
<td><form:input path="contacts[${status.index}].email" /></td>
<td><form:input path="contacts[${status.index}].phone"/></td>
</tr>
</c:forEach>
</table>
<br/>
<input type="submit" value="Save" />
</form:form>
如果我對聯繫人進行修改並提交,則值不會設置爲模型。但是,如果我使用如下所示的純HTML輸入標記,而不是使用Spring JSTL,則值將設置爲模型。
<c:forEach items="${contactForm.contacts}" var="contact" varStatus="status">
<tr>
<td align="center">${status.count}</td>
<td><input name="contacts[${status.index}].firstname" value="${contact.firstname}"/></td>
<td><input name="contacts[${status.index}].lastname" value="${contact.lastname}"/></td>
<td><input name="contacts[${status.index}].email" value="${contact.email}"/></td>
<td><input name="contacts[${status.index}].phone" value="${contact.phone}"/></td>
</tr>
</c:forEach>
當我檢查從瀏覽器中呈現的JSP的HTML源代碼,我能找到的差異輸入控件名稱的下面
//JSP
<form:input path="contacts[${status.index}].firstname"/>
//corresponding HTML not working
<input id="contacts0.firstname" name="contacts0.firstname" type="text" value="Barack"/>
//JSP
<input name="contacts[${status.index}].firstname" value="${contact.firstname}"/>
//corresponding HTML working!
<input name="contacts[0].firstname" value="Barack"/>
這是一個已知的問題,或者是有什麼我失蹤?
Regards, Makesh。