1. 定义一个类继承自: com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
package com.eric.util.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class DateTypeConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object value, Class toType) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd") ;
try {
if(toType == Date.class){//当字符串向Date类型转换时
String[] params = (String[]) value ;
return dateFormat.parse(params[0]);
}else if(toType == String.class){//当Date类型转换为字符串类型时
Date date = (Date) value ;
return dateFormat.format(date) ;
}
} catch (ParseException e) {}
return null ;
}
}
2. 在src 目录 下创建一个xwork-conversion.properties
java.util.Date=com.eric.util.converter.DateTypeConverter
3. action 的代码:
package com.eric.aciton;
import java.net.URLEncoder;
import com.eric.bean.Person;
public class HelloWorldAction {
private String msg ;
private String username ;
private String savepath ;
private String flag ;
private Person person ;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getFlag() {
return flag;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getMessage() {
return this.msg;
}
public String getSavepath() {
return savepath;
}
public void setSavepath(String savepath) {
this.savepath = savepath;
}
public String execute() throws Exception{
//this.flag = "execute" ;
//this.username = URLEncoder.encode("张作强" , "UTF-8") ;
//this.msg = "我的第一个Struts2应用~!" ;
return "success";
}
public String add() {
this.flag = "add" ;
return "message" ;
}
}
4. Person复合类型:
package com.eric.bean;
import java.util.Date;
public class Person {
private Integer id ;
private String name ;
private Date birthday ;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
System.out.println(birthday);
this.birthday = birthday;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
5. index.jsp参数接收视图
<%@ page language="java" import="java.util.*,java.net.URLDecoder" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<form action="<%=request.getContextPath()%>/employee/person.action">
ID<input type="text" name="person.id"><br>
NAME<input type="text" name="person.name"><br>
BIRTHDAY<input type="text" name="person.birthday"><br>
<input type="submit" value="发送">
</form>
</body>
</html>
6. 页面回显视图
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Person</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<br>
<center>
ID:${person.id }<br>
NAME:${person.name }<br>
BIRTHDAY:${person.birthday }
</center>
</body>
</html>
分享到:
相关推荐
这就是"struts2自定义类型转换器"的主题。 首先,理解Struts2的类型转换机制。当Struts2接收到HTTP请求时,它会尝试将请求参数与Action类的属性进行绑定。这个过程涉及到了类型转换,Struts2内置了一套转换器机制,...
创建自定义数据类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口。这个接口包含了一个核心方法`convertValue()`,该方法负责将接收到的值转换为目标类型。我们还需要在类上添加`@Override`注解以确保...
Struts2框架提供了强大的类型转换机制,允许开发者自定义类型转换器,以满足特定业务逻辑的需求。本文将深入探讨Struts2自定义类型转换的原理、分类以及具体实施步骤,帮助开发者更好地理解和应用这一功能。 #### ...
这个压缩包“struts2 全局类型转换器.rar”可能包含了一个示例或教程,教你如何在Struts2中实现全局类型转换器,以统一处理不同类型的字段转换。在Struts2中,类型转换器扮演着重要的角色,它允许你将用户输入的数据...
自定义类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口,或者继承`org.apache.struts2.convention.converters.DefaultConversionProvider`基类,覆盖`convertValue()`方法。然后,通过在Action类或...
在Struts2中,全局转换器(Global Converters)是一个关键特性,它允许开发者为整个应用定义统一的数据类型转换规则,而不是在每个Action类中单独配置。这个特性大大提高了代码的复用性和维护性。 标题“Struts2...
在描述中提到的博客链接(由于实际无法访问,以下内容基于Struts2类型转换器的通用知识)通常会详细解释如何创建和注册自定义类型转换器。开发者可以实现`org.apache.struts2.util.TypeConverter`接口或继承`org....
这时,我们可以创建一个新的类实现`TypeConverter`接口,然后通过在Action类或者全局配置中注册这个转换器,使得Struts2在需要时能够使用它。 注册自定义类型转换器有两种方式: 1. 在Action类上使用注解`@...
Struts2框架提供了一种灵活的方式来实现这种类型的转换——即通过自定义类型转换器(Type Converters)。本文档将详细介绍如何在Java中自定义类型转换器,并通过一个具体的例子来演示其使用方法。 #### 二、局部...
在压缩包文件"自定义struts时间转换器"中,可能包含了具体的实现代码、配置文件示例以及相关的使用说明,这将帮助开发者更好地理解和应用自定义Struts时间转换器。如果你需要进一步的指导或遇到问题,可以详细查看...
通常,Struts2框架内置了一些基本类型的转换器,但有时我们需要对特定的数据类型进行自定义转换,这时就需要编写自定义的转换类。下面将详细讲解如何在Struts2中实现自定义转换类。 首先,了解Struts2的转换机制。...
Struts2框架提供了内置的转换器,可以处理基本类型和某些复杂类型的转换。然而,对于自定义格式或特殊需求,我们需要自定义转换器。转换器的实现基于`Converter`接口,该接口包含一个`convert`方法,用于执行实际的...
举一个实际应用的例子,如果项目中需要显示日期而不要时间,可以创建一个自定义的日期类型转换器,覆盖Struts2默认的行为。在上述代码片段中,可以看到一个名为`DateTypeConverter`的类,它继承了`...
例如,要为`com.test.beans.Point`类创建全局转换器,你可以这样写: ```properties com.test.beans.Point=com.test.convert.PointConverter ``` 此时,无论在哪一个Action中使用到`Point`类,都会使用到你定义的`...
这样,当Struts2遇到匹配的类型时,就会调用我们自定义的转换器进行转换。同时,也可以通过`struts-plugin.xml`或`struts.xml`配置文件来全局注册转换器。 在处理类型转换时,不可避免地会出现**错误处理**。如果...
Struts2的转换器机制就是解决这个问题的关键,它允许我们自定义数据类型的转换过程,确保数据的准确性和一致性。 Struts2框架基于MVC设计模式,其中模型(Model)层处理业务逻辑,视图(View)层负责展示,控制器...
Struts2内置了一些常见的类型转换器,如StringConverter、IntegerConverter、LongConverter等,可以处理基本类型的转换。如果这些内置转换器无法满足需求,开发者可以通过实现Converter接口自定义转换器。自定义转换...
本文将深入探讨Struts2框架中的类型转换器这一核心特性,并通过具体的例子来展示如何创建自定义的类型转换器以及如何在项目中正确配置这些转换器。 #### 二、类型转换的概念 在Struts2框架中,所有从前端页面传递...
本案例"Struts2之类型转换器的使用案例struts002"深入探讨了如何自定义类型转换器以及在实际应用中的使用。 首先,Struts2框架提供了一系列内置的类型转换器,可以自动处理基本类型和常见类型的数据转换,如String...
Struts2提供了丰富的内置类型转换器,可以自动地将用户提交的数据转换为所需的Java数据类型,如`String`、`Integer`、`Double`、`Date`等。这些内置转换器极大地简化了开发者的工作量,并且确保了数据的有效性和一致...