struts2 调用converter错误:ognl.NoConversionPossible
答案:2 悬赏:70 手机版
解决时间 2021-03-04 22:25
- 提问者网友:疯子也有疯子的情调
- 2021-03-04 17:36
我已经配置了XXXAction-conversion.properties文件,而且在里面写了xxx=包.XXXConversion的配置,XXXConversion类是继承了StrutsTypeConverter ,重写了convertFromString,convertToString方法。但是调试的结果是并没有执行XXXConversion这个类,报的错误是ognl.NoConversionPossible,请问为什么?
最佳答案
- 五星知识达人网友:妄饮晩冬酒
- 2021-03-04 18:47
你页面里 有类似空字符转的东西 无法进行转换 ,或者你使用了类似hibernate的持久层框架 实体类中有一个属性为延迟加载,导致的异常
全部回答
- 1楼网友:酒醒三更
- 2021-03-04 19:31
这个问题是struts2导致的。
我再在项目中也遇到类似的问题,页面上有一组checkbox,映射到action中的 int[]。当不选中任何checkbox时出错。
分析:
1、做了两断代码对比,都是生成一组checkbox,一个用手写的 ,另一个用struts2标签
结果:手写的,服务器得到的是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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯