我有2个类,如下,
public class CheckInBean implements Serializable{
private String user;
private Date checkInDate;
private List<ItemBean> items;
..followed by getters and setters
public class ItemBean implements Serializable{
private static final long serialVersionUID = 1L;
private int itemId;
private String barcode;
private String description;
private int minimalCount;
private int initialCount;
private int actualCount;
private String location;
... followed by getters and setters
我有一个使用spring form标签的jsp页面。
我需要为List输入日期和多个ItemBean值(在同一页面上多个)。我不知道怎么做我只是在stackoverflow中的某处读取使用Propertyeditor,但我不确定它是否适合我的要求。请建议。
我正在使用Spring 3.
感谢名单
答案 0 :(得分:1)
那么,发生的事情是,如果您提交包含一个或多个ItemBeans数据的表单,Spring MVC将尝试将这些值映射到EXISTING ItemBean实体。如果CheckInBean实例中的ItemBeans列表为null / empty,则Spring MVC将抛出错误。您可以采取多种措施来防止这种情况发生:
制作您自己的java.util.List
实现(例如,您可以覆盖ArrayList
)并更改get(int position)
方法,以便在调用某个位置时通常该位置将返回null,您首先创建一个新实例,将其放在(超级)列表中的该位置,然后返回它。这是一种破解,但是如果你可以有一个大间隔的ItemBean实例(比如你可能需要3或者你可能需要400),那就好了,因为它只会创建所需的实例而不会过度污染内存。
您可以使用预定义数量的空项预先填充CheckInBean内的ItemBeans列表,这些空项是用户可以使用表单添加到该Bean的最大ItemBean实例数。这不像上面的选项,但它往往是浪费记忆。如果你有一个可以添加到CheckInBean的最小数量的ItemBeans就没问题。