Spring Web MVC中映射数组及Collection类

4 篇文章 0 订阅
一直觉得CSDN是国内最大的技术论坛,其中也有不好的高手,但是从学习Hibernate开始,慢慢发现,大的确是大,但是却真得不够精。很多问题都是问一些怎么配置呀,怎么调试呀;要么就是一些钻牛角尖的问题,讨论来讨论去,如果问到某个框架的具体应用,稍稍深入一点儿,帖子就很快沉下去了。CSND就像是中国整个IT行业一样,给人一种浮躁的、不踏实的感觉。其实我也一样,否则我就不来这里问问题了。

在开发过程中,遇到需要在页面中映射一个对象,而这个对象中有一个List的属性,于是来CSND问,结果不要说答案,回复的都少得可怜。

于是不得不自己找搜索,中文的,没有发现答案,后来在Spring的官方网站发现答案,特此发文以做纪念。

要映射的对象:
class  Question {
private String questionString;
private int questionId;
private  List<Option> options = new ArrayList<Option>();
}

class  Option {
private int optionId;
private String optionString;
}


jsp页面代码:
< form:form  commandName ="surveyQuestion" >
  
< form:hidden  path ="questionId" />
  Question: 
< form:input  path ="questionTitle" />
  
< c:forEach  items ="${surveyQuestion.options}"  var ="option"  varStatus ="counter" >
    
< spring:bind  path ="surveyQuestion.options[${counter.index}].optionString" >
 Option
< input  type ="text"  name ="<%= status.getExpression() %>"  value ="<%= status.getValue() %>" <br>
    
</ spring:bind >
  
</ c:forEach >
</ form:form >

大致上找到的答案都是这样说,这样的写法也的确可以保证页面正确显示form及数据,但是当点击提交按钮时却出现

org.springframework.beans.InvalidPropertyException: Invalid property 'options[0]' of bean class [Question]: Index of out of bounds in property path 'options[0]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

没有办法只好再次去查找,终于找到,有人在论坛(非CSDN论坛)说道,需要在Question的默认的constructor中加入以下语句:

options = ListUtils.lazyList(new ArrayList<Option>(),FactoryUtils.instantiateFactory(Option.class));

应该是Spring在初始化的时候存在一些问题。没有时间看源代码。再次提交,成功了!

后来发现,还是存在一点儿问题,就是当对一个已存在的Question添加Option时仍会出现同样的问题,解决方案请看。
Spring Web MVC中映射数组及Collection类(二)

版权所有: idilent 网站转载请注明作者并链接到http://blog.csdn.net/idilent,
其他转载方式请与作者联系(idilent@yahoo.com.cn)。 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值