`

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

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

分享到:
评论

相关推荐

    Struts2自定义类型转换

    ### Struts2自定义类型转换:深入解析与实践 #### 引言 在Web开发中,数据类型转换是一项常见的需求,特别是在用户输入的数据与后端处理的数据类型不一致时。Struts2框架提供了强大的类型转换机制,允许开发者...

    Struts2学习教程之自定义类型转换器的方法

    Struts2的类型转换是基于OGNL实现的,因此自定义转换器需要实现这个接口。然而,TypeConverter接口的`convertValue`方法比较复杂,通常我们会选择继承`DefaultTypeConverter`类来简化工作。 `DefaultTypeConverter`...

    实验4 Struts2的类型转换与OGNL表达式语言.doc

    ### Struts2的类型转换与OGNL表达式语言 #### 一、Struts2的类型转换类型 在Struts2框架中,类型转换是处理用户输入数据时的一个关键环节。Struts2支持多种内置的数据类型转换,同时也允许开发人员自定义类型转换...

    struts2中的OGNL的源码

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...

    Struts2核心包ognl-2的源代码

    这个压缩包包含的是OGNL的2版本的源代码,这对于理解Struts2框架的工作原理以及OGNL语言的实现细节非常有帮助。 OGNL的主要功能是提供一种简洁的方式来获取和设置对象的属性,甚至可以处理复杂的对象图。例如,你...

    Struts2的自动类型转换及自定义类型转换[文].pdf

    Struts2是一个流行的Java web开发...总之,Struts2的类型转换机制为开发者提供了强大的灵活性和便利性,不仅可以处理基本类型,还能方便地扩展以支持自定义类型和复杂数据结构的转换,从而简化了Web应用的开发工作。

    Struts2类型转换(一)----常规类型,自定义类型,错误处理

    理解并掌握如何利用内置转换器、自定义转换器以及处理转换错误,对于构建高效、稳定的Struts2应用至关重要。通过深入学习Struts2的源码和使用相关工具,我们可以更深入地了解这些机制,并优化我们的应用程序。

    struts2中的ognl.jar

    OGNL支持自定义类型转换、方法解析器和函数库,允许开发者扩展其功能以适应特定项目需求。 总结,OGNL.jar在Struts2框架中起到了桥梁的作用,连接着业务逻辑、数据模型和视图展示。了解和掌握OGNL的使用不仅能提高...

    Struts2_OGNL

    OGNL(Object-Graph Navigation Language)是Struts2框架中的一个重要组件,用于在Web应用中访问和操作Java对象的属性,调用其方法,以及执行类型转换等操作。 OGNL是对象图导航语言的缩写,它是一种功能强大的...

    Struts2 如何使用OGNL表达式(三十八)

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于在视图层和模型层之间进行数据绑定和表达式计算。本文将深入探讨如何在Struts2中有效地使用OGNL表达式。 首先,OGNL是Struts2的...

    Struts 2中的OGNL .rar

    9. **自定义OGNL标签**:Struts 2提供了许多内置的OGNL标签,如`s:text`、`s:property`等,方便在JSP中使用OGNL表达式。开发者还可以根据需求创建自定义的OGNL标签。 通过阅读“Struts 2中的OGNL.pdf”,你可以深入...

    struts2_OGNL Demo

    Struts2_OGNL Demo 是一个用于演示Struts2框架中OGNL(Object-Graph Navigation Language)表达式语言的实例。这个项目旨在帮助开发者理解和学习如何在Struts2中使用OGNL来操纵对象和数据。OGNL是Struts2中一个重要的...

    struts2中的ognl

    Struts2是一个流行的Java web开发框架,而OGNL(Object-Graph Navigation Language)是它用于表达数据绑定和表达式语言的核心组件。在Struts2中,OGNL被广泛用于访问和操作应用程序中的对象属性,包括在请求、参数、...

    STRUTS2类型转换

    总的来说,Struts2的类型转换机制为开发者提供了灵活的输入数据处理方式,既可以利用内置转换,也可以自定义转换器以适应复杂的业务场景。正确理解和使用这一机制,可以提高代码的可维护性和用户体验,确保数据的...

    struts2 ognl用法项目

    在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...

    struts2详细讲解,JQuery,类型转换和OGNL

    本教程将深入探讨Struts2的核心概念、JQuery的使用、类型转换以及OGNL表达式语言。 首先,让我们来看看Struts2的基础知识。Struts2是基于Apache的开源项目,它是对早期Struts框架的升级,引入了拦截器模式,提供了...

    Struts2中的OGNL

    2. **类型安全**:OGNL在解析表达式时,会自动处理类型转换,避免了运行时错误。 3. **上下文感知**:OGNL能够根据当前上下文查找变量,例如在Struts2中,ActionContext可以作为默认上下文。 4. **动态性**:OGNL...

    第四章:struts2中的OGNL.ppt

    第四章:Struts2中的OGNL.ppt详细探讨了Struts2框架中使用OGNL(Object-Graph Navigation Language,对象图导航语言)的关键概念和技术。OGNL作为一种强大的表达式语言,使得开发者能够方便地访问Action携带的数据,...

    struts2.0中的ognl

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象属性,它在Struts2的核心组件中扮演着至关重要的角色。本篇文章将深入探讨OGNL在Struts2.0中的应用及其重要性。 ...

Global site tag (gtag.js) - Google Analytics