Struts2为页面展示数据提供了良好的支持,使开发者可以自定义输出的值。比如,你数据库有个status字段,存储的是整数类型的数据,不同的数字代表着不同的意义。那么在页面展示数据的时候必然不能展示出数值!!有以下几种解决方案:

一、使用struts2的标签库中的<s:if></s:if>。

  优点:简单方便

  缺点:太过于原始,如果很多地方都需要展示,就得多处添加

二、给数据库增加字典表

  优点:从根源上解决了问题

  缺点:增加了数据库压力

三、使用struts2转换器

  优点:一次配置终生使用

  缺点:暂未发现

  下面就重点讲下struts2的用法

........

还是贴出代码吧,懂的人都懂

public class BaseTypeConverter extends StrutsTypeConverter {protected static Logger logger = Logger.getLogger(BaseTypeConverter.class.getName());@Overridepublic Object convertFromString(Map arg0, String[] arg1, Class arg2) {// TODO Auto-generated method stubreturn null;}@Overridepublic String convertToString(Map arg0, Object arg1) {// TODO Auto-generated method stubreturn null;}}

public class IntegerTypeConverter extends BaseTypeConverter {@Overridepublic Object convertFromString(Map context, String[] params, Class toType) {try {return new Integer(params[0].trim());} catch (NumberFormatException e) {logger.error("转换器:IntegerTypeConverter -- 12 line;提交的  Integer 类型转换异常-赋值为0");}/*return new Integer(0);*/return null;}@Overridepublic String convertToString(Map context, Object value) {            try {return value.toString().trim();} catch (Exception e) {logger.error("转换器:IntegerTypeConverter -- 22 line;向页面打印的  Integer 类型转换异常-赋值为空字符串");}        return "";}}

  xwork-conversion.properties  文件

java.lang.Integer=com.vincent.shop.converter.IntegerTypeConverter

  这个配置只是基础配置,给全局用的,针对个别实体的个别属性需要特别配置,学名叫做“局部转换器”。

  需要新建一个actionName-conversion.properties,同时注意,要放到跟Action相同的目录下。然后文件内容也不一样了。这个文件里是指定Action中的某个属性使用某个转换器,格式是属性名=转换器名,如date= com.res.DateConverter,可以由很多,也就是每一个属性都可以设置一个转换器

例如 orderStatus 属性  0,未确认;1,已确认;2,已取消;3,无效;4,退货;

public class OrderStatusInOrderInfoTypeConverter extends BaseTypeConverter {@Overridepublic Object convertFromString(Map context, String[] params, Class toType) {try {return new Integer(params[0].trim());} catch (NumberFormatException e) {logger.error("转换器:IntegerTypeConverter -- 12 line;提交的  Integer 类型转换异常-赋值为0");}/*return new Integer(0);*/return null;}@Overridepublic String convertToString(Map context, Object value) {String integerValue = "";try {OgnlContext ognlContext = (OgnlContext)context;System.out.println(ognlContext.getCurrentNode());String attribute = ognlContext.getCurrentNode().toString().replace("\"", "");if(("orderStatus").equals(attribute.trim())){int orderStatus = Integer.parseInt(value.toString().trim());//0,未确认;1,已确认;2,已取消;3,无效;4,退货;switch (orderStatus) {case 0:integerValue = "未确认";break;case 1:integerValue = "已确认";break;case 2:integerValue = "已取消";break;case 3:integerValue = "无效";break;case 4:integerValue = "退货";break;default:                        break;}}return integerValue;} catch (Exception e) {logger.error("转换器:IntegerTypeConverter -- 22 line;向页面打印的  Integer 类型转换异常-赋值为空字符串");}        return "";}}

  OrderInfoAction-conversion.properties 文件

orderInfo.orderStatus=com.vincent.shop.converter.integer.OrderStatusInOrderInfoTypeConverter.java

注:局部转换器只能用于set值的时候用,在页面输出数据,也就是get的时候不起作用,连局部转换器的方法都不进。但是全局是没有问题的。可以把输出的业务放到全局去做

((OgnlContext)context).getCurrentNode()方法能够拿到你请求的字段是什么,根据此方法得到的字段值进行判断

转载于:https://www.cnblogs.com/BrightMoon/p/3770143.html

Struts2 转换器相关推荐

  1. Struts2介绍(一个大的工具库)

    Struts2介绍 Struts2是Struts的第二代产品,以WebWork为核心,采用拦截器的机制处理用户请求,使业务逻辑控制器能与Servlet API完全脱离.Struts1采用Servlet ...

  2. Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证

    一.自定义类型转换器 1.编写一个类,继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter 2.覆盖掉其中的public Obj ...

  3. Struts2(批量类型转换器struts2.3.4)

    批量类型转换器 package com.wildcat.converter;import java.util.ArrayList; import java.util.List; import java ...

  4. 8.Struts2类型转换器

    类型转换器 1.引入 在Struts2中,请求参数类型不仅可以是String,还可以是其它类型. 如,定义一个请求参数birthday为Date类型,给其赋值为1949-10-1, 则birthday ...

  5. 【struts2】struts2实现自定义数据类型转换器

    JSP提交的数据全部都是String类型的.struts2也是通过request.getParameter(name)获取到String类型数据,并通过拦截器将String转换成各种常用的数据类型,如 ...

  6. Struts2下创建自定义类型转换器(表单中日期的处理)

    在表单提交中需要有日期的输入,默认的Struts2处理机制可能不能满足需求,需要自定义一下类型转换器.如: String----->java.util.Date:输入 java.util.Dat ...

  7. struts2学习笔记之十一:struts2的类型转换器

    Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转 ...

  8. Struts2自定义的转换器

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://www.itivy.com/java/archive/2012/3/6/6346664752875153 ...

  9. Struts2之类型转换器

    一.类型转换器的应用场景 类型转换是OGNL的一部分,默认的八种基本类型.String.Date会使用类型转换,但是更复杂的类型转换就需要我们自定义了(虽然这个东西一般根本用不到),OGNL可以应用在 ...

最新文章

  1. [转]程序员技术练级攻略
  2. 沉迷游戏自学编程,创建游戏帝国,却黯然退场的“鬼才程序员”
  3. python sanic_sanic中文文档
  4. win32中GBK、UTF8的互转
  5. 柴油发电机组的基本结构及工作特性
  6. Oracle数据库分组排序
  7. 清华大学保研笔试题目及解答
  8. 台湾大学林轩田机器学习技法课程学习笔记16(完结) -- Finale
  9. java中mvc事务_关于项目中的事务问题_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...
  10. jquery笔记一:下载安装、语法、选择器、遍历选择元素的方法、jQuery动画
  11. 在保护继承中基类的共有成员_C#初学者教程系列11:继承
  12. webserver之mysql模块
  13. LINQ to SQL之Step by Step及新手问题小结
  14. 爬虫—Requests高级用法
  15. 吴恩达新研究:AI看心电图,诊断心律失常准确率超过人类医生丨Nature
  16. python GIL 全局锁,多核cpu下的多线程性能究竟如何?
  17. 利用阿里云邮件推送免费发邮件,每天免费200封,速度快,还高大上
  18. python 当前时间的零点,python 获取当天凌晨零点的时间戳方法
  19. 《辛雷学习方法》读书笔记——前言
  20. 906007-10-1,Azide-PEG6-Tos叠氮化物(N3)基团可以通过点击化学与炔烃、BCN、DBCO反应

热门文章

  1. 盘点过去10年美国规模最大科技公司IPO:阿里一直是纪录保持者
  2. 贝叶斯网络的应用实例一
  3. python如何得到13位时间戳?
  4. c语言一串字符括号配对,C语言实现括号匹配的方法
  5. 字符串:2.BF算法(普通模式匹配算法)
  6. mpu6050 z轴校准_大渡口区上门校正检定量具外校-第三方检测计量出校准证书
  7. 将图片嵌入程序文件的一点研究
  8. C宏的一个技巧:可变参数
  9. 【linux】linux 查找 或者 搜索 文件 find
  10. 【算法】荷兰国旗问题