出现的异常:

    

    当我输入的数据很大时候,转换后如上,这并不是我想要的,

    出现问题的原因:

Struts2对常用的数据类型如String、Integer、Double等都添加了转换器进行对应的转换操作。

BigDecimal其实也算作是一种常用的数据类型,但Struts2没有对该类型设置转换器。没有转换器而且传递的值为空的属性,Struts2都给默认成了String类型进行处理。如果处理不当,就很容易造成类型转换异常。

  这个时候我们可以有2种方法解决这个问题:

1.:

package com.hzunitech.system.common.convert;

import java.math.BigDecimal;
import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; public class BigDecimalConverter extends StrutsTypeConverter { @Override
public Object convertFromString(Map context, String[] values, Class toClass) {
BigDecimal bd = null;
if(BigDecimal.class ==toClass){
String bdStr = values[0];
if(bdStr!=null&&!"".equals(bdStr)){
bd = new BigDecimal(bdStr);
}else{
//bd = BigDecimal.valueOf(-1);
}
return bd;
}
return BigDecimal.ZERO;
} @Override
public String convertToString(Map context, Object o) { if(o instanceof BigDecimal){
BigDecimal b = new BigDecimal(o.toString()).setScale(2,BigDecimal.ROUND_HALF_DOWN);
return b.toString();
}
return o.toString();
} }

需要在配置文件:

在classpath目录下新建一个xwork-conversion.properties配置文件,具体内容如下

java.math.BigDecimal=com.hzunitech.system.common.convert.BigDecimalConverter

第二种:

  

java.lang.Double = cn.sh.cares.framework.web.struts2.converter.DefaultStrutsTypeConverter
java.lang.Float = cn.sh.cares.framework.web.struts2.converter.DefaultStrutsTypeConverter
java.math.BigDecimal = cn.sh.cares.framework.web.struts2.converter.DefaultStrutsTypeConverter

直接在xwork-conversion.properties配置就可以了

解决后:

  每天进步一点,离梦想就近一点了!

Struts中类型转换踩的坑的更多相关文章

  1. Asp.Net Core中使用Swagger,你不得不踩的坑

    很久不来写blog了,换了新工作后很累,很忙.每天常态化加班到21点,偶尔还会到凌晨,加班很累,但这段时间,也确实学到了不少知识,今天这篇文章和大家分享一下:Asp.Net Core中使用Swagge ...

  2. Ubuntu中安装FTP 服务器自己踩得坑

    12点多了,擦!做个码农真不容易呀! 系统:Ubuntu16.04 安装:FTP 步骤: 1.不管有没有一上来我先卸载: sudo apt-get purge vsftpd 2.再安装:sudo ap ...

  3. celery开发中踩的坑

    celery开发中踩的坑 celery连接redis 当使用redis做broker,redis连接需要密码时: BROKER_URL='redis://:xxxxx@127.0.0.1:6379/0 ...

  4. 在kotlin用jni调用c++的dll中踩的坑

    在kotlin用jni调用c++的dll中踩的坑 can't find dependents libraries 不是个有效的32位程序(或者是?????32??????) 常规检查 java 指针 ...

  5. java基础不牢固容易踩的坑

    java基础不牢固容易踩的坑 经过一年java后端代码以及对jdk源码阅读之后的总结,对java中一些基础中的容易忽略的东西写下来,给偏爱技术热爱开源的Coder们分享一下,避免在写代码中误入雷区. ...

  6. 从零开始学 Java - Spring 支持 CORS 请求踩的坑

    谁没掉进过几个大坑 记得好久之前,总能时不时在某个地方看到一些标语,往往都是上面一个伟人的头像,然后不管是不是他说的话,下面总是有看起来很政治正确且没卵用的屁话,我活到目前为止,最令我笑的肚子痛得是下 ...

  7. struts中简单的校验

    Struts中简单的校验 “计应134(实验班) 凌豪” Struts2校验简要说明:struts2中通常情况下,类型转换要在数据校验之前进行.类型转换其实也是基本的服务器端校验,合法数据必然可以通过 ...

  8. webuploader插件,我踩得坑

    我在目前的公司做的项目要么是原生写法去做项目,要么就是vue+webpack做项目,但是vue这部分只是用了模板template,vue其他的都没用. 有一个项目需要做上传图片的功能,老大扔给我一个插 ...

  9. 谈谈调用腾讯云【OCR-通用印刷体识别】Api踩的坑

    一.写在前面 最近做项目需要用到识别图片中文字的功能,本来用的Tesseract这个写的,不过效果不是很理想. 随后上网搜了一下OCR接口,就准备使用腾讯云.百度的OCR接口试一下效果.不过这个腾讯云 ...

随机推荐

  1. tensorflow cnn+rnn基本结构

    #CNN x = tf.placeholder(tf.float32,[None,input_node],name="x_input") y_ = tf.placeholder(t ...

  2. Spring随笔之ApplicationContext

    前言 以前自己学习和实习的时候多次用过spring框架.对于我这种菜鸟来说,Spring给我的第一印象是好学,太TM好学了(抱歉没忍住脏话),跟着开发组熟悉几天就可以开始写代码,自我感觉代码敲得飞起~ ...

  3. 2017.8.4 Creating Server TCP listening socket *:6379: bind: No such file or directory

    启动redis时出现如下错误:  解决办法:按顺序输入如下命令就可以连接成功. 1. redis-cli.exe 2. shutdown 3. exit 4. redis-server.exe 参考来 ...

  4. Centos 7 联想Y430P无线网卡驱动安装 过程参考

    Centos 7  联想Y430P无线网卡驱动安装 过程参考 ABRT 已检测到 [root@endv ~]# yum install -y rdesktop 已加载插件:fastestmirror, ...

  5. nodeJs-autoBulid

    /** * Created by Administrator on 2016/1/16. */ var projectData = { 'name' : 'autobulid', 'fileData' ...

  6. 【BIEE】09_BIEE控制台乱码问题解决

    BIEE安装完成后,点击[启动BI服务] 接着从弹出窗口可以发现,全部汉字都是乱码 出现这种情况,想看一下BIEE启动情况是很费劲的,接着我们处理一下这个问题 1.从路径D:\obiee\user_p ...

  7. Oracle 重置序列

    Oracle将自增sequence重置为初始值1时,若是删除再重建,那么依赖它的函数和存储过程将失效,需要重新编译. 这里利用相反的过程,利用负值步长参数,将递增值改为(sequence.NEXTVA ...

  8. Spring MVC 学习笔记 spring mvc Schema-based configuration

    Spring mvc 目前支持5个tag,分别是 mvc:annotation-driven,mvc:interceptors,mvc:view-controller, mvc:resources和m ...

  9. 数据文件offline 时oracle 干了那些事?

    SQL> oradebug setmypid Statement processed. SQL> oradebug unlimit Statement processed. SQL> ...

  10. POJ 3126 Prime Path (BFS+剪枝)

    题目链接:传送门 题意: 给定两个四位数a.b,每次能够改变a的随意一位.而且确保改变后的a是一个素数. 问最少经过多少次改变a能够变成b. 分析: BFS,每次枚举改变的数,有一个剪枝,就是假设这个 ...