您的位置:首页 > 编程语言 > Java开发

STRUTS2 类型转换器 BigDecimal 处理

2016-10-10 15:30 274 查看
最近比较闲,好像没干啥正事。。。这个千万不能给老板知道。。。

啦啦啦啦啦啦啦啦啦啦

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

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

今天,老大说

我们项目中现在页面要输入数值,数据库是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不能强转啊。。。这是血的教训啊

早上
4000
就开始折腾,不知道哪个货写的公共方法实现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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0