我目前正在使用 spring mvc 开发一个简单的 Web 应用程序,并且我在我的 jsp 页面中使用 spring 表单。
我有一个包含多行的网格,并且要选择每一行来执行基本的 CRUD 操作(可以选择多行来创建场景)。如何持久化使用复选框选择的每一行(bean 列表:每一行都是一个 bean 对象)。
我在很多论坛上搜索过这个,但找不到任何我可以使用的好例子。
public class Contact {
private String firstname;
private String lastname;
private String email;
private String phone;
public Contact() {
}
public Contact(String firstname, String lastname, String email, String phone) {
this.firstname = firstname;
this.lastname = lastname;
this.email = email;
this.phone = phone;
}}
这是列表对象
public class ContactForm {
private List<Contact> contacts;
public List<Contact> getContacts() {
return contacts;
}
public void setContacts(List<Contact> contacts) {
this.contacts = contacts;
}}
我在我的jsp页面中尝试了这个,但它不起作用......
<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>
控制器代码。
@Controller
public class ContactController {
private static List<Contact> contacts = new ArrayList<Contact>();
static {
contacts.add(new Contact("Barack", "Obama", "barack.o@whitehouse.com", "147-852-965"));
contacts.add(new Contact("George", "Bush", "george.b@whitehouse.com", "785-985-652"));
contacts.add(new Contact("Bill", "Clinton", "bill.c@whitehouse.com", "236-587-412"));
contacts.add(new Contact("Ronald", "Reagan", "ronald.r@whitehouse.com", "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);
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView save(@ModelAttribute("contactForm") ContactForm contactForm) {
System.out.println(contactForm);
System.out.println(contactForm.getContacts());
List<Contact> contacts = contactForm.getContacts();
if(null != contacts && contacts.size() > 0) {
ContactController.contacts = contacts;
for (Contact contact : contacts) {
System.out.printf("%s \t %s \n", contact.getFirstname(), contact.getLastname());
}
}
return new ModelAndView("show_contact", "contactForm", contactForm);
}
}
该示例发布在其中一个论坛中,我选择将其用作模板并根据我的应用程序中的需要使用它...但是在控制器中,该示例具有静态块,其中的值是硬编码的,而是我想添加来自 jsp 页面的值并将 bean 对象列表发送回控制器以将其保存在数据库中。请向我提供有关如何在 jsp 页面中使用弹簧表单的建议,以便我可以将 bean 对象列表发送回控制器。