`

struts2的数据类型转换两种父类

 
阅读更多
struts2配置文件:
<package name="struts2" extends="struts-default" namespace="">  
<action name="index" class="com.web.struts.LoginAction" method="test">
<result name="success">/output.jsp</result>
</action>
</package>
LoginAction:
package com.web.struts;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
private String username;
private String password;
private Point point;

public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
    public String execute() {
System.out.println("成功!");
        return "success";
   }
public String test() {
System.out.println("成功2!");
        return "success";
}



}
Point.java:
package com.web.struts;

public class Point {

private int x;
private int y;

public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}

}
PointConverter.java:
package com.web.struts;

import java.util.Map;

import ognl.DefaultTypeConverter;

public class PointConverter extends DefaultTypeConverter {

@Override
public Object convertValue(Map context,Object value, Class toType) {
if(Point.class == toType){

Point point = new Point();

String[] string = (String[])value;
String[] paramValue = string[0].split(",");

int x = Integer.parseInt(paramValue[0]);
int y = Integer.parseInt(paramValue[1]);

point.setX(x);
point.setY(y);

System.out.println(x+":"+y);

return point;

}


if(String.class == toType){
Point point = (Point)value;

int x = point.getX();
int y = point.getY();
String result = "[ x = " + x +" y = "+y+ "]";
System.out.println(x+":"+y);
return result;

}

return null;
}

}
封装后的类型转换:
package com.web.struts;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class PointConverter2 extends StrutsTypeConverter {

@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Point point = new Point();

String[] paramValue = values[0].split(",");

int x = Integer.parseInt(paramValue[0]);
int y = Integer.parseInt(paramValue[1]);

point.setX(x);
point.setY(y);

System.out.println(x+":"+y);

return point;
}

@Override
public String convertToString(Map context, Object o) {
Point point = (Point)o;

int x = point.getX();
int y = point.getY();
String result = "简化版[ x = " + x +" y = "+y+ "]";
System.out.println(x+":"+y);
return result;
}

}



局部类型转换LoginAction-conversion.properties配置信息:
point=com.web.struts.PointConverter:point是属性


全局类型转换xwork-conversion.properties配置信息:
com.web.struts.Point=com.web.struts.PointConverter
com.web.struts.Point包下面的对象

登陆页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>My JSP 'Login2.jsp' starting page</title>
  </head>
  <body>
<s:form action="/index.do">
<s:textfield name="point" label="坐标"></s:textfield>
<s:textfield name="username" label="用户名"></s:textfield>
<s:password name="password" label="密码"></s:password>
<s:submit></s:submit>
</s:form>
  </body>
</html>
显示页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

   
    <title>My JSP 'ouput.jsp' starting page</title>

  </head>
 
  <body>
    坐标<s:property value="point"/>
    用户名<s:property value="username"/>
    密码<s:property value="password"/>
  </body>
</html>
分享到:
评论

相关推荐

    struts2自定义数据类型转换练习

    本练习主要关注如何在Struts2中实现自定义的数据类型转换,以满足特定业务需求。 首先,我们需要了解Struts2的数据转换机制。当用户提交表单数据时,Struts2会通过ActionContext获取到这些数据,并尝试将其转换为...

    strut1和struts2深度比较.doc

    - Struts1的类型转换需要手动处理,如果表单提交的数据类型与Action属性不匹配,需要编写转换代码。 - Struts2提供自动类型转换,通过`Converter`接口和`xwork-conversion.properties`配置文件,可以自定义类型...

    Struts2 支持REST 代码

    6. **返回数据格式**:默认情况下,Struts2 REST插件支持JSON和XML两种格式。如果需要返回其他格式,可以通过配置自定义结果类型或使用第三方库实现。 7. **处理URL参数**:RESTful URL中的路径参数和查询参数可以...

    java面试题大全--java基础,struts,spring,ejb等

    数据类型之间的转换 - **数值型字符转换为数字**:使用包装类的parse方法,例如`Integer.parseInt("123")`。 - **数字转换为字符**:通过`String.valueOf()`方法或者`+`运算符将数字转换为字符串。 - **取小数点前...

    java面试题

    Java面试题涵盖了广泛的领域,包括基础语法、数据类型转换、日期时间处理、数组和集合、I/O操作、多态、编码转换、数据库访问、JSP和Servlet技术、J2EE相关知识以及其他编程概念。以下是这些知识点的详细说明: 1. ...

    java面试知识点易错难点总结

    - **数据类型转换**:通常按照从小到大的顺序进行自动转换;反之,需要显式强制转换。字符与数字之间的转换可通过UNICODE码实现。 #### 标识符与关键字 - **关键字**:Java中有49个关键字,其中包括未使用的`goto`...

    java面试题大全.pdf

    3. 数据类型转换: - 数字字符转数字:使用Integer.parseInt()或Double.parseDouble()。 - 数字转字符:通过`(char)`强制类型转换或使用`Character.toString()`。 - 取小数点前两位并四舍五入:使用`Math.round()...

    JAVA程序员面试题收集.pdf,这是一份不错的文件

    - 数据类型转换:Character.getNumericValue()用于字符转数字,Integer.parseInt()或Double.parseDouble()用于字符串转数字;NumberFormat类可用于格式化数字并四舍五入。 2. **日期和时间**: - 使用java.time...

    Java面试题大全

    - 数据类型转换:使用`parseInt()`、`doubleValue()`等方法进行转换;取小数点前两位并四舍五入可使用`DecimalFormat`类。 2. **日期和时间**: - 使用`java.util.Calendar`或`java.time`包中的类获取年月日、...

    从J2SE到J2EE知识点介绍

    4. **多线程**:讲解线程的概念、创建线程的两种方式(继承Thread类和实现Runnable接口),线程生命周期、状态转换,线程调度和线程同步以防止数据竞争。 【Jsp】 JSP(JavaServer Pages)是Java Web开发的一部分...

    Java学习笔记-个人整理的

    {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}...

    java面试题题库详解

    - **Thread 类与 Runnable 接口:** 实现多线程的两种方式。 - **线程同步:** synchronized 关键字和 Lock 接口。 #### 12. Struts框架简介 **知识点概述:** - **Struts 概念:** 一种基于 MVC 设计模式的 Java ...

Global site tag (gtag.js) - Google Analytics