STRUTS2 类型转换器 BigDecimal 处理

最近比较闲,好像没干啥正事。。。这个千万不能给老板知道。。。

啦啦啦啦啦啦啦啦啦啦


中秋出国门溜达了一圈,发现还是国内好,其中琐事这里就不说了

国庆回家带孩子,其中琐事这里也不表了。。。


今天,老大说

我们项目中现在页面要输入数值,数据库是ORACLE 的number类型,所以,我们属性用的是bigdecimal


但是呢,Struts2+Spring+hibernate的框架

页面用ognl表达式

然后呢,ajax提交请求

json传递


就造成了到后台全是string类型,除了哪些基本类型

然后就各种办法。。。。

灵机一动,想到了,可以在vo的set方法返回值为bigdecimal,然后呢,参数为string,试了一下,果然可以


不要以为就结束了。。。。没有

以上方法虽然简单明了,但是。。。

特么每个bigdecimal的属性都要转一下啊,烦


想着有没有什么办法

看到网上有struts类型转换器的帖子

然后,各种晕

为啥呢

因为我们项目中有struts2,ognl,Xwork啊

然后不知道用哪个typeConverter了

然后就翻了一下各个的那啥


继承ognl的DefaultTypeConverter类,然后重写它的convertValue()方法就可以啦。。。。


继承Struts2的StrutsTypeConverter类

一个converFromString(Map context, String[] values, Class toClass)方法
一个converToString(Map context,Object o)方法


Xwork的直接放弃,几乎好像没什么人用xwork了吧,这里就不说了,其实是我也不知道


然后,用的是全局的配置,防止还有其他地方用,所以干脆全局,省得以后还要再配置

这个就不说了,谁要自己去搜吧

然后一个converter类继承DefaultTypeConverter

实现convertValue方法。。。这个网上也有,我也是抄的,稍微改了下


其实,上面,都不是我要说的

我想说的是

bigdecimal不能强转啊。。。这是血的教训啊

早上就开始折腾,不知道哪个货写的公共方法实现string转bigdecimal,我直接调用,鬼知道,特么里面的实现竟然是(bigdecimal)obj

坑了我一个早上啊

以为没有try catch

所以,没有捕获到错误,但是呢,其他地方一直报nosunchmethod。。。setAaaaaa(java.lang.string)。。。

妈蛋,一直赋值不进去

我一直以为是类型转换器不行,一个劲的研究,开始是ognl的,不行就换struts2的。。还是不行

劳资就纳了闷了。。为什么呢。。。

各种调啊

翻帖子啊,怀疑是不是以为传递的时候是string的原因,改为bigdecimal,以为是动态输入的,有点麻烦,不切合实际,改了一半又还原了。。。不靠谱

然后,想着是不是ognl不行,换s:textfield标签。。。不行

换s:property。。。感觉好像不对,又还原

各种办法想啊。。。最后。。。想到一个办法。。。debug啊。。。因为断电后进入了jar包,看不出来啥玩意

还是没发现。。最后的最后,加上了try   catch

才发现特么,公共方法错了啊,谁写的啊,坑货。。。

改完后


把几个方法都跑了一下,就是之前尝试换的,只不过是往回试,发现,都是可以的。。。

劳资站起来就是一顿骂。。。谁特么个坑货写的公共方法,这不是坑人吗


参考帖子 http://blog.sina.com.cn/s/blog_800148f40101l9zh.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值