如何使用 java spring 框架将多行从 Web 表单插入数据库

2023-12-06

我是 Java Spring 框架的新手,我的新项目有一个要求。

使用 Spring 框架,我有一个带有 set 和 get 方法的 POJO 类。 我还有中级java服务和web课程。我已经用过<form>标签从 jsp 映射到 bean 类,并且能够使用单个对象执行所有操作。

但我的问题是如何对多个对象(记录)执行相同的工作。

简单来说: 如何使用 jsp 页面中的输入数据一次将 7 行(记录)插入数据库表中。如何接受来自 jsp 页面的输入参数并创建对应于 7 行的 7 个对象,然后在单击提交按钮时插入它们?

请为此提供一些指导。


我将通过使用另一个 POJO 作为容器来实现这一点,其中包含 POJO 列表。

这看起来像这样:

public class PojoForm {
    private List<Pojo> pojos;
    public List<Pojo> getPojos() {
        return pojos;
    }
    public void setPojos(List<Pojo> pojos) {
        this.pojos = pojos;
    }
}

然后在控制器中,使用这个容器而不是实际的 pojo 作为模型属性。

@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";
}

那么视图应该看起来像这样:

<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 类的属性。

您也可以直接在列表上循环,如下所示:

<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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 java spring 框架将多行从 Web 表单插入数据库 的相关文章

随机推荐