Struts2提供的类型转换:

  Struts2提供的是一个名叫StrutsTypeConverter的抽象类,这个类实际上是DefaultTypeConverter的子类。当我们继承自该抽象类

时,要求我们实现下面的两个方法:

  @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;}

很明显我们可以看到该抽象类将父类中的convertValue方法拆分成了两个单独的方法,来简化我们的实现工作,使程序的逻辑更加清楚。下

面是简单的实现代码:

@Overridepublic Object convertFromString(Map arg0, String[] values, Class toClass) {User user = new User();String[] useValues = values[0].split(",");String username = useValues[0];String userpass = useValues[1];user.setName(username);user.setPass(userpass);return user;}@Overridepublic String convertToString(Map context, Object o) {if (o instanceof User) {User user = (User) o;return "<" + user.getName() + "," + user.getPass() + ">";}return null;}

  在这之前我们都是考虑的要转换的属性是单个的情况,那么当我们在Action中设置的属性字段是多个也就是数组的时候,又是怎么处理

的呢?比如我们在Action中将【privateUser user;】替换为【private User[] users;】时,有怎么处理呢?实现的方法也非常容易理解,

可以从参考下面的实现代码:

  (实验未成功运行)

类型转换的错误处理:

  Struts框架为类型转换提供了一个默认的conversionError拦截器,这个拦截器被注册到默认的拦截器栈中。可以查看struts-

default.xml文件,在里面找到相关内容,部分内容如下如所示:(我们要学会自己去看,去寻找事情的原因。在初学阶段Struts2

里面有两个文件我们会经常用到:

  @1:struts-default.properties,这个文件在jar包struts2-core-2.3.31中,可以通过WinRAR或其它解压缩软件解压后就

可看到。

  @2:default.properties,这个文件同样是在jar包struts2-core-2.3.31中,具体路径是struts2-core-2.3.31\org\apache

\struts2,里面定义了Struts2中的所有常量,将来我们在配置一些常量比如打开或关闭调试模式,设置是否支持动态方法调用等时

,可以作为参考)。

    

  上面我们说到了默认的拦截器conversionError,它会将拦截到的错误消息封装成表单域错误(fieldError),将其放到ActionContext

中, 我们可以在jsp页面中使用<s:fielderror/>将错误信息打印出来(需使用Strurs2的自定义标签)。当拦截器对错误信息处理后,页面

会转入“input”逻辑视图下,就是我们在struts.xml中配置的对应于Action的<resultname="INPUT">xxx.jsp<result/>。(这里建议在

编写Action类的时候继承ActionSupport类,该类中为类型转换错误处理,数据校验等实现了基本的处理工作)。这样当表单验证失败时,

会在INPUT逻辑视图下的页面中显示:信息,xxx为对应的Action中要转换的属性名称。

  除此之外,如果我们想让类型转换出错时显示:XXX类型转换错误  这样的提示信息,此时我们可以通过全局国际化资源文件来配置,下

面是简单的操作步骤:

    @1文件路径:既然是全局的资源文件,当然要把它放到src目录下,或者还可以直接放到WebContent/WEB-INF/classes下面

  (classes文件夹若没有可自己创建)。

    @2文件命名格式:xxx.properties即可,但xxx不能为struts,因为struts.properties在项目中有其固定的用途,这里不做过

  多说明。

    @3文件内容:xwork.default.invalid.fieldvalue={0}类型转换错误。

    @4加载资源文件:这里只提供其中一种方式,在struts.xml文件中的<struts>标签下加上 <constant name="struts.custom.

  i18n.resources" value="global"></constant>,struts.custom.i18n.resources可以在上面提到的文件default.properties文

  件中找到。

  经过上述步骤后,我们可以发现提示错误信息已经换成了我们规定的格式。

  在某些时候我们或许需要为Action中不同的属性字段设置不同的提示信息,此时我们只需要在该Action的资源文件中配置即可,操作

步骤如下:

    @1创建Action的局部资源文件,命名格式:ActionName.properties。ActionName是对应的Action类的文件名。

    @2文件内容:invalid.fieldvalue.属性名=提示信息。

    @3文件路径:与对应的Action在同一路径下。

  经过上述步骤后,我们已经为字段设置了不同的提示信息了。

转载于:https://www.cnblogs.com/itaiit/p/6426843.html

Struts2的类型转换(下)相关推荐

  1. (十二)struts2的类型转换

    所有的MVC框架,都属于表现层的解决方案,都需要负责收集用户请求参数,并将请求参数传给应用的控制器组件. 这时问题出现了,所有的请求参数都是字符串类型数据,因此MVC框架必须具备将这些字符串请求参数转 ...

  2. Struts2之类型转换

    http://blog.csdn.net/xiazdong/article/details/7229682 一.Struts2 类型转换介绍 类型转换:解析HTTP请求参数,将Http请求参数赋值给A ...

  3. Struts2 Date类型转换问题

    来源:http://blog.csdn.net/cowboy324/article/details/6704716 在Struts2中,一般的内置类型都会在由系统自动进行转换.但是Date类型好像有时 ...

  4. struts html:select 默认选中,Struts2自动选择下拉框的值

    在Struts2中,HTML下拉框可以通过标签呈现.要自动选择一个下拉框的默认值,只是声明值"属性标记,并设置相应的默认值. 这里创建一个Web工程:strut2autoselectdrop ...

  5. Struts2 自己定义下拉框标签Tag

    自己定义标签主要包含三个步骤: 1.编写java类,继承TagSupport类. 2.创建tld文件,影射标签名和标签的java类. 3.jsp页面引入tld. 样例:自己定义下拉框标签 假设页面上有 ...

  6. java xwork_java-与休眠的Struts2 xwork类型转换

    在Struts2应用程序中转换类型的最佳方法是什么? 现在,我想为我的应用程序中的某个休眠实体创建CRUD.假设我想更改与用户关联的帐户.只要我具有所有适当的获取器/设置器,我就可以传递带有特定值的参 ...

  7. struts2.x自定义类型转换

    struts2的类型转换是基于OGNL(对象图像导航语言) 1   OGNL里面有一个接口TypeConverter,该接口有一个方法convertValue,convertValue该方法很复杂,里 ...

  8. 整合Struts2、Spring、Hibernate构建J2EE应用

    [论文摘要] J2EE即是以Java 2平台为基础的体系结构,又是一组旨在简化企业解决方案的开发.部署.运行.维护等相关复杂问题的技术规范与指南.Struts2.Spring.Hibernate是当今 ...

  9. struts2(2012/2/24)

    1.struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,struts2可以使用内建的类型转换器实现自动转换:但对于自定义的对象类型来说,就需要我们自己指定类型转换的方式 ...

最新文章

  1. sqlmap 常用操作
  2. 万维网发布服务 w3svc 已停止 除非万维_W3C万维网联盟宣布停止发布HTML 5.3版
  3. 【安全漏洞】Easy代码审计
  4. 如何使用Graphics2D在一张图片上画线(包括箭头)
  5. .NET Core + Kubernetes:Pod
  6. 十进制小数化为二进制小数的方法是什么_八进制转换成十进制,十进制转换成八进制...
  7. 计算机应用 winxp,2017年职称计算机考试模块WindowsXP试题
  8. 动态规划 —— 线性 DP —— 序列问题
  9. mysql从库延时好高_部署MySQL延迟从库的几个好处
  10. windows本地凭据备份与还原
  11. [渝粤教育] 盐城工学院 大学物理(力学、振动与波动) 参考 资料
  12. 中国地图里暗藏的天机
  13. 虚拟机Ubuntu21.04全屏显示
  14. Windows server 2008 密码策略不能修改的解决办法
  15. 毕业一年来我的前端之路总结和谈谈大厂外包工作体验
  16. 试验数据管理系统TDM6.0产品功能介绍之——签到管理
  17. bton框架业务核心流程架构
  18. word表格合并单元格后,光标居中
  19. sigsuspend 函数 释疑
  20. PCI DSS认证到底难在何处?

热门文章

  1. python函数绘制5个太阳花_python_bomb----函数
  2. mysql的一个字段最多能插入多少数据?我们存入text类型的值上限是多大?
  3. java组长一个月工资多少,保准看明白!
  4. 一条正确的Java职业生涯规划,从理论到实践!
  5. 全球缺芯的后果来了——网站推广之下小米宣布部分电视产品型号要涨价!
  6. 网络推广专员浅析网站运营三种基本模式具备哪些网络推广重点!
  7. 网站增改不要只想着收益更应该思考原有的损失
  8. java excel读取操作,Java 操作 Excel (读取Excel2003 2007,Poi兑现)
  9. html怎样添加日历控件,向日历控件中添加自定义内容
  10. python字符串打印教学_python字符串格式化教你正确打印 : D