如何使用java spring框架将多个行从Web表单插入到数据库中 [英] How to Insert multiple rows from web form into database using java spring framework
问题描述
我是Java Spring Framework的新手,我的新项目有一个要求。
I am new to Java Spring Framework and I have a requirement in my new project.
使用Spring框架,我有一个带set和get方法的POJO类。
我还有中间java服务和Web类。我已经使用< form>
标签从jsp映射到bean类,并能够使用单个对象执行所有操作。
Using the Spring framework, I have a POJO class with set and get methods.
I also have intermediate java service and web classes. i have used the <form>
tags to map from jsp to bean class and able to perform all the action with a single object.
但我的问题是如何为多个对象(记录)做同样的工作。
But my problem is how can i do the same work for more then one object(record).
简单来说:
如何使用来自jsp页面的输入数据,一次将7行(记录)插入数据库表中。如何从我的jsp页面接受输入参数并创建7个对应7行的对象,然后在点击提交按钮时插入它们?
In simple word: How do I insert 7 rows(records) into the database table at one time, using input data from my jsp page. How do I accept input parameters from my jsp page and create 7 objects that correspond to 7 rows and then insert them on the click of submit button?
请提供一些指导这个。
推荐答案
我会通过让另一个POJO作为一个包含你的POJO列表的容器来实现这一点。
I would achieve that by having another POJO serving as a container with a list of your POJOs inside.
这看起来像这样:
public class PojoForm {
private List<Pojo> pojos;
public List<Pojo> getPojos() {
return pojos;
}
public void setPojos(List<Pojo> pojos) {
this.pojos = pojos;
}
}
然后在控制器中,使用此容器而不是实际的pojo作为模型属性。
Then in the controller, use this container instead of the actual pojo as a model attribute.
@ModelAttribute("pojoForm")
public PojoForm populatePojos() {
// Don't forget to initialize the pojos list or else it won't work
PojoForm pojoForm = new PojoForm();
List<Pojo> pojos = new ArrayList<Pojo>();
for(int i=0; i<2; i++) {
pojos.add(new Pojo());
}
pojoForm.setPojos(pojos);
return pojoForm;
}
@RequestMapping(method=RequestMethod.POST)
public String saveForm(@ModelAttribute("pojoForm") PojoForm pojoForm) {
for(Pojo pojo : pojoForm.getPojos()) {
service.save(pojo);
}
return "theview.jsp";
}
然后视图看起来像这样:
Then the view should look something like this :
<form:form commandName="pojoForm" method="POST">
<!-- Pojo 1 -->
<form:input path="pojos[0].a" />
<form:input path="pojos[0].b" />
<form:input path="pojos[0].c" />
<!-- Pojo 2 -->
<form:input path="pojos[1].a" />
<form:input path="pojos[1].b" />
<form:input path="pojos[1].c" />
</form:form>
a,b和c是Pojo类的属性。
a, b and c being the properties of the Pojo class.
你也可以像这样直接在列表上循环:
You can also directly loop on the list like this :
<form:form commandName="pojoForm" method="POST">
<c:forEach items="${pojoForm.pojos}" varStatus="i">
<form:input path="pojos[${i.index}].a" />
<form:input path="pojos[${i.index}].b" />
<form:input path="pojos[${i.index}].c" />
</c:forEach>
</form:form>
这篇关于如何使用java spring框架将多个行从Web表单插入到数据库中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!