Struts2day03OGNL自定义类型转换

  Struts2.0框架不能够或者不能完整的进行自动类型转换时采用自定义类型转换
  自定义类型转换器
    1.开发一个类,extends StrutsTypeConverter
    2.配置文件,声明自定义类型转换器

 


      一. 局部的类型转换器:
       配置文件的名称: actionName-conversion.properties
       配置文件的位置: 和Action放在同一个目录结构当中
       配置文件的内容: Action中需要类型转换器的属性=自定义类型转换器的全路径

 

1.在com.jsu.struts2.action包中写一个类extends StrutsTypeConverter

       在DateConverter.java文件中

package com.jsu.struts2.action;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class DateConverter extends StrutsTypeConverter {

    @Override
    public Object convertFromString(Map context, String[] values, Class toClass) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        Date d = null;
        String dateStr = values[0];//用户提交的数据
        try {
            d=sdf.parse(dateStr);
           
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return d;
    }

    @Override
    public String convertToString(Map context, Object obj) {
        Date d =(Date)obj;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        String dateStr=sdf.format(d);
        return dateStr;
    }

}

 2.reg.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> </head>
  <body>
     <center>
   <form action="add.action" method="post">
   userName:<input type="text" name="username"/><br>
   Age:<input type="text" name="age"/><br>
   Birthday:<input type="text" name="birthday"/><br>
   <input type="submit" value="Submit"/>
   </form>
   </center>
  </body>
</html>

 3.在com.jsu.struts2.action包中写一个Action RegisterAction extends ActionSupport

    在RegisterAction.java文件中

package com.jsu.struts2.action;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport {
	private String username;
	private String age;
	private Date birthday;
	@Override
	public String execute() throws Exception {
		System.out.println(username+" : "+age+" : "+birthday);
		return SUCCESS;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
}

 4.在和Action同一目录结构当做写配置文件,配置文件命名actionName-conversion.properties

   配置文件的内容: Action中需要类型转换器的属性=自定义类型转换器的全路径

  在RegisterAction-conversion.properties配置文件中

birthday=com.jsu.struts2.action.DateConverter

 5.在struts.xml文件中

<struts>
	<package name="loginDemo" namespace="/" extends="struts-default">
		<action name="add" class="com.jsu.struts2.action.RegisterAction">
			<result type="redirect">/reg.jsp</result>
		</action>
	</package>
</struts>
 

二、 全局的类型转换器
           配置文件的名称: xwork-conversion.properties
           配置文件的位置: 在src目录下面
           配置文件的内容: 需要进行类型转换的类型=自定义类型转换器的全路径
           局部类型转换:只针对某一个Action的某一个属性进行转换
           全局类型转换:对所有Action对象中该类型的属性进行转换

在 xwork-conversion.properties配置文件中

java.util.Date=com.jsu.struts2.action.DateConverter

 以上其他内容都一样,只改变配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值