全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

一篇文章搞定Struts2的类型转换

前言

我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种。所以,我们需要类型转换!下面来看看详细的介绍吧。

一、类型转换的意义

所有的MVC框架,解决的都是表现层的解决方案,都需要收集用户请求参数,并把参数提供给控制器。但是,在Web应用中所有的请求参数都是字符串类型的,Java是强类型的语言,如何将字符串转换为Java类型,这是框架要解决的一个问题。
例如,一个注册页需要输入年龄、日期等。这时候就需要将日期、年龄字符串转换为相应类型。

二、Struts2的类型转换器

Struts2提供了内置的类型转换器,对于大部分类型,开发者无需自定义类型转换器,使用内置的类型转换器就可以完成我们需要的类型转换。

内置类型转换器有:

     1.boolean和Boolean

     2.char和Character

     3.int和Integer

     4.long和Long

     5.float和Float

     6.double和Double

     7.date

比如我们在页面输入20,传输到后台肯定是字符串类型。但是Struts框架的内置类型转换可以把20转换为int型。但是如果我们转换abc这样的为int是行不通的。

三、自定义类型转换器的实现

1、需求分析

比如我们需要在页面上输入(2,3)这样一个坐标点,将该点转换为一个点对象类型。

2、实现

当内置类型转换无法满足我们的需求的时候,需要用到自定义类型转换。Struts2的类型转换时基于ONGL的,在ONGL中有一个接口TypeConverter,该接口中有一个方法converterValue,该方法很复杂。其中还有一个默认的实现类DefaultTypeConverter,通过该类来实现类型转换。

package com.study.converter;
import java.util.Map;
import com.study.bean.Point;
import ognl.DefaultTypeConverter;
 
public class PointConverter extends DefaultTypeConverter{
 public Object convertValue(Map context, Object value, Class toType) {
  if(toType==Point.class){
   String []strs = (String[])value;
   String []xy = strs[0].split(",");
    
   int x = Integer.valueOf(xy[0]);
   int y = Integer.valueOf(xy[1]);
    
   Point p = new Point();
   p.setX(x);
   p.setY(y);
    
   return p;
    
  }else if(toType==String.class){
   Point p = (Point) value;
   return "["+p.getX()+","+p.getY()+"]";
  }else{
   return null;
  }
 }
}

这就是转换器的一个简单实现,把页面传输的值进行解析,最后转换为Point类型。然后要让类型转换器起作用,需要进行配置
struts2提供了两种配置方法:

a.局部:首先创建文件命名如Actionname-conversion.properties,里面的内容为 属性=类型转换器(ponit=com.study.converter)需要写在包下面

b.全局:首先创建文件命名如xwork-conversion.properties,内容为com.study.bean.Ponit=com.study.converter。文件需要写在src下面

3、Struts的实现

struts2中有一个StrutsTypeConverter类,它是继承DefaultTypeConverter。使用它来自定义转换器更加方便,示例代码如下:

package com.study.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.study.bean.Point;
 
public class PointConverter extends StrutsTypeConverter{
 public Object convertFromString(Map map, String[] obj, Class toType) {
  String []strs = obj;
  String []xy = strs[0].split(",");
 
  int x = Integer.valueOf(xy[0]);
  int y = Integer.valueOf(xy[1]);
 
  Point p = new Point();
  p.setX(x);
  p.setY(y);
 
  return p;
 }
 
 public String convertToString(Map map, Object obj) {
  Point p = (Point) obj;
  return "["+p.getX()+","+p.getY()+"]";
 }
}

4、类型转换器的错误处理

Struts2提供了一个名为conversionError的拦截器,如果类型转换出现错误,拦截器负责将错误封装成表单错误(filederror),并将错误信息放入ActionContext中。

如何那么改变默认类型转换错误的错误提示信息?

方法一:

首先创建一个资源文件Mess.properties,放在src下面
然后覆盖xwork-core-2.3.31\com\opensymphony\xwork2\xwork-messages.properties里面的属性xwork.default.invalid.fieldvalue。即在Mess.properties中写入如下参数

xwork.default.invalid.fieldvalue="{0}"参数转换失败.

然后指定我们的资源文件,在struts.xml中(不需要加文件后缀)

<constant name="struts.custom.i18n.resources" value="Mess"></constant>

方法二:

为某个action的字段提供错误信息提示
定义Actionname.properties文件,添加配置——Invalid.fieldvalue.属性名=提示信息

总计

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# struts2  # 类型转换器  # struts2数据类型转换  # struts2的类型转换器  # 关于Struts2的类型转换详解  # 如何解决struts2日期类型转换  # Struts2开发 基本配置与类型转换  # struts2中类型转换实例代码  # Struts2单选按钮详解及枚举类型的转换代码示例  # Struts2学习教程之自定义类型转换器的方法  # 转换为  # 都是  # 中有  # 自定义  # 提示信息  # 写在  # 错误信息  # 这是  # 放在  # 拦截器  # 不需要  # 这就是  # 两种  # 它是  # 并将  # 这样一个  # 还有一个  # 来看看  # 要让  # 一个问题 


相关文章: 怀化网站制作公司,怀化新生儿上户网上办理流程?  如何用好域名打造高点击率的自主建站?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何通过.red域名打造高辨识度品牌网站?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  建站上传速度慢?如何优化加速网站加载效率?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  网站制作需要会哪些技术,建立一个网站要花费多少?  ,有什么在线背英语单词效率比较高的网站?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  无锡营销型网站制作公司,无锡网选车牌流程?  如何在Windows 2008云服务器安全搭建网站?  西安大型网站制作公司,西安招聘网站最好的是哪个?  已有域名如何免费搭建网站?  如何选择香港主机高效搭建外贸独立站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  济南专业网站制作公司,济南信息工程学校怎么样?  javascript中的try catch异常捕获机制用法分析  网站制作企业,网站的banner和导航栏是指什么?  如何高效搭建专业期货交易平台网站?  免费网站制作appp,免费制作app哪个平台好?  如何快速搭建自助建站会员专属系统?  nginx修改上传文件大小限制的方法  如何通过FTP空间快速搭建安全高效网站?  如何打造高效商业网站?建站目的决定转化率  岳西云建站教程与模板下载_一站式快速建站系统操作指南  建站之星导航配置指南:自助建站与SEO优化全解析  如何用西部建站助手快速创建专业网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  济南企业网站制作公司,济南社保单位网上缴费步骤?  魔方云NAT建站如何实现端口转发?  如何快速配置高效服务器建站软件?  ,如何利用word制作宣传手册?  如何正确选择百度移动适配建站域名?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  如何快速搭建虚拟主机网站?新手必看指南  招商网站制作流程,网站招商广告语?  建站主机空间推荐 高性价比配置与快速部署方案解析  深入理解Android中的xmlns:tools属性  建站之星如何实现PC+手机+微信网站五合一建站?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  建站主机SSH密钥生成步骤及常见问题解答?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  网站网页制作专业公司,怎样制作自己的网页?  如何在西部数码注册域名并快速搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。