Spring Web MVC中映射数组及Collection类
来源:互联网 发布:matlab solve 矩阵 编辑:程序博客网 时间:2024/05/18 00:19
一直觉得CSDN是国内最大的技术论坛,其中也有不好的高手,但是从学习Hibernate开始,慢慢发现,大的确是大,但是却真得不够精。很多问题都是问一些怎么配置呀,怎么调试呀;要么就是一些钻牛角尖的问题,讨论来讨论去,如果问到某个框架的具体应用,稍稍深入一点儿,帖子就很快沉下去了。CSND就像是中国整个IT行业一样,给人一种浮躁的、不踏实的感觉。其实我也一样,否则我就不来这里问问题了。
在开发过程中,遇到需要在页面中映射一个对象,而这个对象中有一个List的属性,于是来CSND问,结果不要说答案,回复的都少得可怜。
于是不得不自己找搜索,中文的,没有发现答案,后来在Spring的官方网站发现答案,特此发文以做纪念。
要映射的对象:
jsp页面代码:
大致上找到的答案都是这样说,这样的写法也的确可以保证页面正确显示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)。
在开发过程中,遇到需要在页面中映射一个对象,而这个对象中有一个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;
}
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: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)。
- Spring Web MVC中映射数组及Collection类
- Spring Web MVC中映射数组及Collection类(二)
- Spring MVC中静态资源映射配置
- spring mvc 中使用 @RequestMapping 映射请求
- 基于Spring注解的WEB MVC开发,URL映射
- 基于Spring注解的WEB MVC开发,URL映射
- 基于Spring注解的WEB MVC开发,URL映射
- Web项目中使用XML配置加载Spring及Spring MVC的组件
- spring mvc url映射
- Spring MVC地址映射
- spring mvc 映射
- spring mvc中org.springframework.web.servlet.DispatcherServlet类
- spring mvc中org.springframework.web.servlet.DispatcherServlet类
- Servlet中配置spring mvc及web.xm各组件的启动顺序
- java web项目中配置spring mvc
- spring mvc中web.xml的配置
- Spring MVC中发布Restful Web服务
- Web环境中Spring MVC(一)
- magicajax 使用说明(转贴自http://www.cnblogs.com/snowball/)
- Java内存管理的小技巧
- SOA 术语概述: 第 1 部分,服务、体系结构、治理和业务术语
- GridView绑定数据源时无记录时也显示表头
- Java学习:多线程(1)
- Spring Web MVC中映射数组及Collection类
- Delphi快捷键大全
- 数据库设计
- Savepoints In Transactions
- PHP新手面试题总100分
- 在C#中使用属性控件添加属性窗口
- vs2005环境重置办法
- ADO和ADO.net与数据库数据类型转换表
- 深入理解C++中的mutable关键字