一、全局类型转换器
1、新建Struts2项目
2、org.zttc.itat.model包下新建
Message.java
package org.zttc.itat.model;
public class Message {
private int id;
private String title;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
Point.java
package org.zttc.itat.model;
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;
}
}
3、在org.zttc.itat.action包下新建
MessageAction.java
package org.zttc.itat.action;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
import org.zttc.itat.dao.MessageDao;
import org.zttc.itat.model.Message;
import org.zttc.itat.model.Point;
import com.opensymphony.xwork2.ModelDriven;
public class MessageAction implements ModelDriven<Message>{
private Message msg;
private Point point;
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public Message getMsg() {
return msg;
}
public void setMsg(Message msg) {
this.msg = msg;
}
public String addInput(){
return "success";
}
public String add(){
return "success";
}
public String updateInput(){
try {
MessageDao md=new MessageDao();
Message tmsg=md.load();
BeanUtils.copyProperties(msg, tmsg);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}
public Message getModel() {
if(msg==null) msg= new Message();
return msg;
}
}
4、在org.zttc.itat.converter包下新建
PointConverter.java
package org.zttc.itat.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import org.zttc.itat.model.Point;
/*
* 要为某个对象增加相应的类型转换器,首先得创建一个类继承StrutsTypeConverter
* */
public class PointConverter extends StrutsTypeConverter {
/*
* 完成字符串到对象的转换
*
*/
@Override
public Object convertFromString(Map arg0, String[] values, Class toClass) {
Point p =new Point();
if(values.length<=1) {
String str=values[0];
String[] cods =str.split(",");
p.setX(Integer.parseInt(cods[0]));
p.setY(Integer.parseInt(cods[1]));
}
return p;
}
/**
* 完成对象到字符串的转换
*/
@Override
public String convertToString(Map arg0, Object o) {
Point p =(Point) o;
return p.getX()+","+p.getY();
}
}
5、在WEB-INF/Message 下面新建
updateInput.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Message updateInput</h1>
<s:debug/>
<form action="Message_add.action" method="post">
Id:<input type="text" name="id" value=" <s:property value="id"/>"/> <br/>
Title:<input type="text" name="title" value=" <s:property value="title"/>"/> <br/>
Content:<input type="text" name="content" value=" <s:property value="content"/>"/> <br/>
Point:<input type="text" name="point" /><br/>
<input type="submit" />
</form>
</body>
</html>
add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Message Add</h1>
${msg.id }---${msg.title}---${msg.content}
<br/>
<s:property value="point"/>
</body>
</html>
6、struts.xml 如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.action.extension" value="action,ejb,html"/>
<constant name="struts.configuration.xml.reload" value="true"/>
<package name="default" namespace="/" extends="struts-default">
<!-- <action name="user_addInput" class="org.zttc.itat.action.UserAction" method="addInput">
<result name="success">/WEB-INF/user/addInput.jsp</result>
</action>
<action name="user_add" class="org.zttc.itat.action.UserAction" method="add">
<result name="success">/WEB-INF/user/add.jsp</result>
</action>
<action name="user_list" class="org.zttc.itat.action.UserAction" method="list">
<result name="success">/WEB-INF/user/list.jsp</result>
</action> -->
<!-- <action name="user" class="org.zttc.itat.action.UserAction">
<result name="add">/WEB-INF/user/add.jsp</result>
<result name="addInput">/WEB-INF/user/addInput.jsp</result>
<result name="list">/WEB-INF/user/list.jsp</result>
</action> -->
<action name="*_*" class="org.zttc.itat.action.{1}Action" method="{2}">
<result name="success">/WEB-INF/{1}/{2}.jsp</result>
<result type="redirect" name="r_list">/{1}_list.action</result>
</action>
</package>
</struts>
在浏览器中输入:http://localhost:8080/struts01_8/Message_updateInput.action
在Point 栏中输入 8,88
浏览器跳转到http://localhost:8080/struts01_8/Message_add.action
Message Add
12--- 小白兔--- 我是大白兔8,88
二、局部类型转换器