【问题标题】:Spring MVC jsp list of objectsSpring MVC jsp对象列表
【发布时间】:2011-02-02 11:26:13
【问题描述】:

我使用 Spring MVC 3.0 和 JSP。我有一个对象:

public class ObjectWrapper {
    private List<SomeTO> someTOs;
}

SomeTO 类包含 nameid 等字段。如何创建用户可以动态添加到SomeTO 列表的表单?我在 Google 上搜索了一下,发现了一些关于 spring:bind 的信息,但我不清楚。

【问题讨论】:

    标签: java html list spring-mvc


    【解决方案1】:

    在表单支持方法中,将列表设置为 LazyList,它是 apache commons 集合库的一部分。

    Factory notificationFactory = new Factory() {
           public Object create() {
                SomeTO rtVl = new SomeTO();
                return rtVl;
            }
     };
    myFormBacking.setSomeTOs(LazyList.decorate(myFormBacking.getSomeTOs));
    

    然后在您的表单上,当您将数据发送到服务器时,您可以这样做

    <input name="someTOs[0].name" value="" />
    

    如果你使用

    <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    

    那么你就可以走了。

    <form:input path="someTOs[0].name" />
    

    在将数据发布到服务器之前,为了使修剪更容易,请设置集合中的元素数量。因此,如果用户添加了 5 个 TO,则在表单中发送该长度值。

    现在在服务器上,您必须在保存之前修剪列表。这是修剪的功能

    public List<SomeTOs> pruneList(List<SomeTOs> unpruned,int expectedLength){
        List<SomeTOs> rtVl = new ArrayList<SomeTOs>();
        for (int i = 0; i < unpruned.length && expectedLength; ++i){
             rtVl.add(unpruned.get(i);
        }
        return rtVl;
    }
    

    这里是on submit(保存前)中prune功能的使用

    wrapper.setSomeTOs(pruneList(wrapper.getSomeTOs(),Integer.parseInt(request.getParameter("expectedLength)));
    

    【讨论】:

    • 你能解释一下,表单代码是什么?我不明白 command.someTOs[0].someProperty = "YES";很抱歉提出疯狂的问题)
    • 呵呵,对不起...在我发布答案后,我看到了属性名称和 ID。让我帮你解决
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2012-12-03
    相关资源
    最近更新 更多