`

struts2-写自己的转换器

阅读更多
b) 写自己的转换器:
public class MyPointConverter extends DefaultTypeConverter{

	@Override
	public Object convertValue(Object value, Class toType) {
		if(toType == Point.class) {
			Point p = new Point();
			String[] strs = (String[])value;
			String[] xy = strs[0].split(",");
			p.x = Integer.parseInt(xy[0]);
			p.y = Integer.parseInt(xy[1]);
			return p;
		}
		if(toType == String.class) {
			return value.toString();
		}
		return super.convertValue(value, toType);
	}

}
public class MyPointConverter extends StrutsTypeConverter{



	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		
			Point p = new Point();
			String[] strs = (String[])values;
			String[] xy = strs[0].split(",");
			p.x = Integer.parseInt(xy[0]);
			p.y = Integer.parseInt(xy[1]);
			return p;
		
		
	}

	@Override
	public String convertToString(Map context, Object o) {
		// TODO Auto-generated method stub
		return o.toString();
	}

}


c) 三种注册方式:i. 局部:XXXAction-conversion.properties
1. p(属性名称) =  converter
ii. 全局:xwork-conversion.properties
1. com.xxx.XXX(类名)= converter
iii. Annotation
d) 如果遇到非常麻烦的映射转换i. request.setAttribute();
ii. session


package com.hugui.action;

import java.awt.Point;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport {
	
	private String name;
	private int age;
	private Date d;
	//传值:interests=example
	Set<String> interests;
	//传值:user['key']=value
	Map<String, String> users;
	//传值:p.x=4&p.y=5
	Point p;
	
	List<Point> ps;
	Map<String, Point> points;
	
	
	@Override
	public String execute() throws Exception {
		
		return super.execute();
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Date getD() {
		return d;
	}

	public void setD(Date d) {
		this.d = d;
	}

	public Set<String> getInterests() {
		return interests;
	}

	public void setInterests(Set<String> interests) {
		this.interests = interests;
	}

	public Map<String, String> getUsers() {
		return users;
	}

	public void setUsers(Map<String, String> users) {
		this.users = users;
	}

	public Point getP() {
		return p;
	}

	public void setP(Point p) {
		this.p = p;
	}

	public List<Point> getPs() {
		return ps;
	}

	public void setPs(List<Point> ps) {
		this.ps = ps;
	}

	public Map<String, Point> getPoints() {
		return points;
	}

	public void setPoints(Map<String, Point> points) {
		this.points = points;
	}

	

}



package com.bjsxt.converter;

import java.awt.Point;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class MyPointConverter extends StrutsTypeConverter{



	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		
			Point p = new Point();
			String[] strs = (String[])values;
			String[] xy = strs[0].split(",");
			p.x = Integer.parseInt(xy[0]);
			p.y = Integer.parseInt(xy[1]);
			return p;
		
		
	}

	@Override
	public String convertToString(Map context, Object o) {
		// TODO Auto-generated method stub
		return o.toString();
	}

}




如果遇到不能转换的类型,就到属性文件里面去看有没有转换器
1. p(属性名称) =  converter
ii. 全局:xwork-conversion.properties
1. com.xxx.XXX(类名)= converter
iii. Annotation
java.awt.Point=com.bjsxt.converter.MyPointConverter


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>Type Conversion</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	name:<s:property value="name"/><br/>
  	age:<s:property value="age"/><br/>
  	date:<s:property value="d"/><br/>
  	<s:date name="d" format="yyyy/MM/dd HH:mm:ss"/><br/>
  	<s:property value="interests"/><br/>
  	<s:property value="users"/><br/>
  	<s:property value="p"/><br/>
  	<s:property value="ps"/><br/>
  	points:<s:property value="points"/><br/>
  	
  </body>
</html>

分享到:
评论

相关推荐

    struts2-json-plugin源码

    6. **类型转换**:Struts2的类型转换器在处理JSON请求时起着关键作用,将JSON字符串转换为Java对象。 7. **自定义JSON序列化和反序列化**:源码中可能会包含自定义的序列化和反序列化逻辑,以便在转换过程中处理...

    struts2-core-2.0.11源码

    9. **类型转换(Type Conversion)**:Struts2提供了一套强大的类型转换机制,位于`org.apache.struts2.convention.converters`包下,可以自动将请求参数转换为Action属性的期望类型。 10. **注解支持(Annotations...

    struts-json-plugin-2.1.8.jar struts2-junit-plugin-2.1.8.jar json-lib-2.1.jar

    Struts2是一个非常流行的Java Web开发框架,它提供了一种模型-视图-控制器(MVC)架构,便于开发者构建动态、数据驱动的Web应用程序。然而,在开发过程中,经常会出现库文件版本不兼容的问题,这可能导致程序运行...

    struts2-blank-2.0.14的lib中的jar包

    - `xwork-core.jar`: XWork是Struts2的前身,提供了一些基础功能,如类型转换、结果映射等。 5. **其他依赖** - `commons-fileupload.jar`: Apache Commons FileUpload库,用于处理HTTP请求中的文件上传。 - `...

    struts2-json-plugin-2.3.8.jar

    Struts2的核心功能包括动作映射、拦截器、结果类型、插件系统等。 **JSON介绍:** JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它采用完全独立于语言的文本格式,但使用了类似于...

    struts2 相关jar包 包含json-lib-2.1.jar+struts2-json-plugin-2.1.8.1.jar

    - **Interceptor(拦截器)**:这些是Struts2中的重要组件,它们在Action调用前后执行,提供了事务控制、日志记录、权限验证等功能。 - **配置文件**:通常有struts.xml或类似的配置文件,用于定义Action、结果...

    struts2-core-2.3.32和xwork-core-2.3.32

    XWork则是Struts2的基础框架,提供了一系列底层功能支持,如类型转换、拦截器机制等。 标题提到的"struts2-core-2.3.32"和"xwork-core-2.3.32"是Struts2框架的重要组成部分。"struts2-core-2.3.32.jar"包含了Struts...

    struts2.3.32修补S2-045漏洞所有核心jar包及依赖的jar(含core包)

    `xwork-core-2.3.32.jar`是Struts2的基础框架,提供了动作调度、转换器、验证器等功能。它与`struts2-core`紧密协作,共同构成了Struts2的基础架构。在S2-045修复过程中,XWork库也相应地进行了更新,确保与安全增强...

    struts-2.3.15.3所以jar包

    8. **xwork-core.jar**:XWork是Struts 2的前身,它的核心功能被Struts 2继承,包括Action、Result、Interceptor等概念,以及类型转换、异常处理等机制。 9. **commons-lang3.jar, commons-logging.jar, log4j.jar*...

    Struts2.0.11-lib

    5. `xwork-2.0.11.jar`:XWork是Struts2的基础,提供动作管理和类型转换等功能。 6. `commons-logging-1.1.1.jar`、`log4j-1.2.15.jar`等:日志相关的库,帮助记录和调试应用日志。 在实际开发中,开发者需要将这些...

    struts2-json-plugin-2.1.8jar包.zip

    在Struts2框架中,JSON Plugin使得Action的返回结果可以直接转换为JSON格式,方便前端JavaScript代码处理。这个插件的版本为2.1.8,表明它是针对Struts2框架2.1.8版本设计和优化的。该版本可能包含了对JSON序列化、...

    struts2-json-plugin-2.1.8.1.jar

    在Struts2框架中,该插件允许开发者将Action的返回结果直接转换为JSON格式,方便进行Ajax(Asynchronous JavaScript and XML)操作,提高Web应用的响应速度和用户体验。 标题"struts2-json-plugin-2.1.8.1.jar"表明...

    struts2-lib

    - `xwork-core`: XWork是Struts2的基础,提供了Ognl表达式语言、类型转换、拦截器等功能。 2. **视图技术**: - `freemarker`: Struts2默认的视图模板引擎,用于动态生成HTML页面。 - `struts2-freemarker-...

    struts2-jar包

    7. **类型转换与验证**:Struts2提供了自动类型转换和字段验证的功能,使得表单提交的数据可以自动转换为Action中的属性,并进行合法性检查。 8. **国际化与本地化**:Struts2支持多语言,可以轻松实现应用的国际化...

    struts-2.1.8-LIB包

    2. **xwork-core.jar**:XWork是Struts 2的基础,提供了类型转换、验证、事件处理等基础服务。Struts 2构建在XWork之上,增强了MVC架构。 3. **ognl.jar**:Object-Graph Navigation Language(OGNL)是Struts 2中...

    struts2-core-2.1.8.1 xwork-core-2.1.6源码

    深入研究这两个库的源码,开发者能够理解Struts2的内部工作原理,优化性能,解决潜在问题,并根据需要定制自己的功能。这对于提升Web应用的开发效率和维护性具有重大意义。通过分析源码,开发者还可以学习到设计模式...

    Struts2-core-2.1.8.1.jar

    6. **类型转换(Type Conversion)**:Struts2自动处理表单数据的类型转换,减少了开发者手动处理数据格式化的工作。 7. **验证框架**:内置的验证框架可以方便地对用户输入进行验证,提供了一套灵活的验证规则和...

    Struts2-2.1.6一个最简单的例子,以及需要的基础jar包

    Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、模块化且易于管理的MVC(模型-视图-控制器)应用。在本文中,我们将深入探讨Struts2框架的基本概念,以及如何利用Struts2-2.1.6版本创建一个最简单...

    struts2-处理类型转换

    转换器的配置可以通过局部配置(Action所在包下的Action简单类名-conversion.properties)或全局配置(src下的xwork-conversion.properties)来完成。 **自定义错误信息** 当类型转换失败时,Struts2会打印英文的...

    struts-2.3.31-all.zip

    2. **Interceptor拦截器**:Struts2的拦截器机制是其一大亮点,允许开发者在Action执行前后插入自定义的处理逻辑,例如日志记录、权限验证、数据校验等。这些拦截器可以通过配置文件或注解灵活组合使用。 3. **...

Global site tag (gtag.js) - Google Analytics