Struts2转换器
为什么进行类型转换
在基于HTTP协议的Web应用中
客户端请求的所有内容都以文本编码方式传输到服务器端
服务器端的编程语言却有着丰富的数据类型
继承StrutsTypeConverter抽象类
继承org.apache.struts2.util. StrutsTypeConverter类
应用于全局范围的类型转换器
在src目录创建xwork-conversion.properties
转换类全名=类型转换器类全名
应用于特定类的类型转换器
在特定类的相同目录下创建一个名为ClassName-conversion.properties的属性文件
特定类的属性名=类型转换器类全名
向用户输出类型转换错误的前提条件
启动StrutsConversionErrorInterceptor拦截器
拦截器已经包含在defaultStack拦截器栈中
Action要继承ActionSupport类
其实是要实现ValidationAware接口
配置input结果映射
页面使用Struts 2表单标签或<s:fielderror>标签
Struts 2表单标签内嵌了输出错误信息功能
普通HTML标签需使用<s:fielderror>标签输出转换错误
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:fielderror/>
<s:form action="demo4Action">
<s:textfield name="birthday" label="出生日期"/><br>
<s:textfield name="tel" label="电话号码"/><br>
<s:submit value="submit"/>
</s:form>
</body>
</html>
转换器类:
public class DateConvert extends StrutsTypeConverter {
//将字符串转换为对象类型
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
Date dt=null;
// 获取页面要转换的值
if(arg1[0]!=null&&!"".equals(arg1[0])){
String dateStr =arg1[0];
//封装一个转的目标类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
//将字符串转换为日期
dt= sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
return dt;
}
//将对象转换为页面所需要的类型
public String convertToString(Map arg0, Object arg1) {
String str="";
if(arg1!=null){
if(arg1 instanceof Date){
Date date = (Date)arg1;
//date 对象转换为字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
str = sdf.format(date);
}
}
return str;
}
}
配置文件:
java.util.Date = com.org.converter.util.DateConvert
com.org.entity.Telephone = com.org.converter.util.TelConverter
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="false"/>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.configuration.xml.reload" value="true"/>
<constant name="struts.custom.i18n.resources" value="abc"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="demo1action" class="com.org.ognl.Demo1Action">
<result>/success.jsp</result>
</action>
<action name="demo3Action" class="com.org.ognl.Demo3Action">
<result name="result">/result.jsp</result>
</action>
</package>
<include file="com/org/converter/action/struts.xml"></include>
</struts>
Struts2转换器的更多相关文章
- Struts2 转换器
转换器 从一个 HTML 表单到一个 Action 对象,类型转换是从字符串到非字符串 Http 没有 "类型" 的概念,每一项表单的输入只可能是一个字符串或一个字符串数组,在服务 ...
- Struts2转换器配置和用法
struts转换器:在B/S应用中,将字符串请求参数转换为相应的数据类型,是MVC框架提供的功能,而Struts2是很好的MVC框架实现者,理所当然,提供了类型转换机制. 一.类型转换的意义 对于一个 ...
- Struts2(接受表单参数)请求数据自动封装和数据类型转换
Struts2请求数据自动封装: (1)实现原理:参数拦截器 (2)方式1:jsp表单数据填充到action中的属性: 普通的成员变量,必须给set,get可以不给的. 注意点,A ...
- 8.Struts2类型转换器
类型转换器1.引入在Struts2中,请求参数类型不仅可以是String,还可以是其它类型.如,定义一个请求参数birthday为Date类型,给其赋值为1949-10-1,则birthday接收到的 ...
- 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...
- Struts2:类型转换器
常规的String,int能自动转换,但是,有些类型不是这么简单,比如输入字符串,但需要Date.自定义类型,因此需要自定义类型转换类型转换器分全局和局部按惯例,局部的优先级高于全局 需求: 1.输入 ...
- struts2学习笔记之十一:struts2的类型转换器
Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注 ...
- Struts2框架的自定义类型转换器
前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ...
- struts2类型转换器、 类型转换错误 以及INPUT view
1.1.1 Struts2中的类型转换器 Struts2内置了常见数据类型多种转换器 boolean 和 Boolean char和 Character int 和 Integer long 和 ...
随机推荐
- 《人件》读后感 PB16110698 第十周(~5.15)
在同组马同学的推荐下,我阅读了<人件>一书.在我看来,本书与之前读过的几本软工书籍相比,最大的特色就是地地道道的“以人为本”:不同于<人月神话><构建之法>等结合软 ...
- 2019-8-31-C#-如何写出一个不能被其他程序集继承的抽象类
title author date CreateTime categories C# 如何写出一个不能被其他程序集继承的抽象类 lindexi 2019-08-31 16:55:58 +0800 20 ...
- Ubuntu下怎么退出vim编辑器
vim其实就是vi的升级版,vi里的所有命令vim里都可以用,一般使用来说几乎没什么差别. 写在前面:进入vim编辑器之后无法退出并保存,可以尝试给要编辑的文件sudo权限(例如:sudo vim / ...
- webgoat的构建
如何打开webgoat 1.ctrl+r 打开命令 2.cmd 打开命令编辑器 3.我的webgoat保存在E:/安全软件/webgoat-container-7.0.1-war-exec下 4.在 ...
- Java语言支持的变量类型有
Java语言支持的变量类型有: 类变量:独立于方法之外的变量,用 static 修饰. 实例变量:独立于方法之外的变量,不过没有 static 修饰. 局部变量:类的方法中的变量.
- drupal7 smtp+mimemail+mailsystem 实现发送html邮件
1.下载三个模块 smtp: https://www.drupal.org/project/smtp mimemail: https://www.drupal.org/project/mimemail ...
- 十一. for of
const fruits = ['Apple','Banana','Orange','Mango']; es5: 可读性差 for(let i=0; i < fruits.length; i + ...
- ETL工具-Kattle:初识kattle
ETL是EXTRACT(抽取).TRANSFORM(转换).LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环也是工作量较大的一块.当前知道的 ...
- BZOJ 1010 (HNOI 2008) 玩具装箱
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MB Submit: 12665 Solved: 5540 [Submit][S ...
- (转)获取android手机内部存储空间和外部存储空间的参数 && 如何决定一个apk的安装位置
转:http://blog.csdn.net/zhandoushi1982/article/details/8560233 获取android文件系统的信息,需要Environment类和StatFs ...