Struts2,在表示层输出的值是ognl.NoConversionPossible,是什么意思?

我在action里privateStringlist4[][]=null;通过两层循环list4[i][j]=svrImp.getDatas(answerSQL4).ge... 我在action里private String list4[][]=null;
通过两层循环list4[i][j]=svrImp.getDatas(answerSQL4).get(0).toString();
在jsp表示层输出<s:property value='list4'></s:property>却是
ognl.NoConversionPossible
展开
 我来答
匿名用户
2013-08-26
展开全部
这个问题是struts2导致的。

我再在项目中也遇到类似的问题,页面上有一组checkbox,映射到action中的 int[]。当不选中任何checkbox时出错。

分析:
1、做了两断代码对比,都是生成一组checkbox,一个用手写的 <input type="checkbox">,另一个用struts2标签 <s:checkbox>
结果:手写的,服务器得到的是null,可以正常处理;用struts2标签,得到false,无法转换为int[],出错。

2、看struts2源码
发现原因在于struts2 checkbox 的template 和interceptor.
在simple template中,对于每一个checkbox,都会生成一个hidden input,其name为"__checkbox_%checkbox的name%"
struts2缺省使用了一系列的intecerptor,其中就有CheckboxInterceptor。在这个interceptor中,会判断是否选择了任意一个checkbox,如果没有,则将其值设为false(字符串形式)

解决思路:
a. 在页面中加入一个与checkbox同名的hidden input,指定一个特殊的值,在action中进行参数校验时处理
b. 使用不同的模板
c. 禁用Checkbox Interceptor
d. 要求struts修改代码,或者自行修改,增加一个开关项,来选择是否为checkbox生成相应的hidden input
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式