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>
<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>