java - Spring 表单映射到数组

标签 java spring-mvc mapping

美好的一天。 我在客户端得到了一个表格。在这种形式中我得到了很多行。每行包含 3 个字段(日期、ID 和金额)。客户端可以添加行(借助 JavaScript),因此服务器端不知道会有多少行。

我需要将此表单与表示此数据的类进行映射。

public class RowStruct
{
    private Long id;
    private Double amount;
    private Date date;

}
public class FormStruct
{
    private ArrayList<RowStruct> arrData;
{

所以我需要表单中的数据与 FormStruct 对象进行映射。

@RequestMapping("/send")
public ModelAndView getList(HttpServletRequest req,FormStruct formStruct)
{
    ModelAndView model = new ModelAndView();

}

这可能吗?我该怎么做?

最佳答案

您必须在客户端/html 上使用索引。

<input name="arrData[0].id" />
<input name="arrData[0].amount" />
<input name="arrData[0].date" />

每次添加行时,都必须增加索引。 除非你不删除一行,否则它会像这样工作。

我想您允许客户删除行,因此这不可避免地会在索引之间造成间隙。但您不必在客户端修复此问题,在模型到达 Controller 后,您可以过滤 arrData 以获得 NULL 引用。

@RequestMapping("/send")
public ModelAndView getList(HttpServletRequest req,FormStruct formStruct)
{
    Iterator<RowStruct> it = formStruct.getArrData().iterator();
    while (it.hasNext()) {
        if (it.next() == null)
            it.remove();
    }
    ModelAndView model = new ModelAndView();

}

关于java - Spring 表单映射到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295952/

相关文章:

java - 如何使用外部绑定(bind)覆盖 JAXB 中的默认名称?

mapping - 获取 Leaflet LayerGroup 大小的简单方法?

html - 使用魔术棒坐标的图像 map 软件

java - java中如何替换特定字符串?

java - 从 Spring Web 服务获取 Jetty 实例

java - 如何使用 SpringApplicationConfiguration 或 ContextConfiguration 加载较小的应用程序部分

spring-mvc - Spring @RestController 获取请求内容类型以响应 json 或 html

java - 如何学习用 Java 设计应用程序

java - 如何为相同的用户标识选择相同的颜色

java - NoSuchMethodError : org. springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment;与 zkoss