struts2类型转换
2013-08-05 09:09
274 查看
struts2类型转换
基于ongl的类型转换
配置struts.xml
<?xml version="1.0"encoding="gbk"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 设置Web应用的默认编码集为gbk -->
<constant name="struts.i18n.encoding"value="gbk" />
<!-- 设置Web应用的默认Locale为zh_CN-->
<constant name="struts.locale" value="zh_CN"/>
<!-- 设置Struts2.1应用的国际化资源文件,多个文件中间可用逗号分隔-->
<constant name="struts.custom.i18n.resources"value="MessageResource,globalMessage" />
<!--设置Struts2.1应用是否处于开发模式,通常在开发调试阶段设为true,正式上线后可设为false-->
<constant name="struts.devMode" value="true"/>
<!-- 设置Struts2.1的默认主题为simple-->
<constant name="struts.ui.theme" value="simple"/>
<!-- 设置上传文件临时文件夹 -->
<constant name="struts.multipart.saveDir"value="/tmp" />
<package name="book" extends="struts-default"namespace="/">
<!-- 类型转换 start -->
<action name="convertType"class="com.book.struts.action.ConverTypeAction">
<result>convertSuccess.jsp</result>
</action>
<action name="convert" >
<result>convertType.jsp</result>
</action>
<!-- 类型转换 end-->
</package>
</struts>
<!-----------------------------------建立一个pojo类User.java--------------------------------------------------->
package com.pojo;
public class User {
private String name;
private String passWord;
private int id;
private String loginName;
public User(String name,String passWord){
this.name = name;
this.passWord = passWord;
}
public User(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
}
<!------------------------------------配置ActionConverTypeAction.java---------------------------------->
package com.book.struts.action;
import com.opensymphony.xwork2.ActionSupport;
import com.pojo.User;
@SuppressWarnings("serial")
public class ConverTypeAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
if(getUser().getName().equals("michael")&&getUser().getPassWord().equals("123")){
return SUCCESS;
}
return INPUT;
}
}
<!---------------------------------------类型转换页面convertType.jsp--------------------------------------->
<%@ page language="java" import="java.util.*"pageEncoding="gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" +request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>AddUser</title>
</head>
<body>
<form action="convertType" method="post">
<table>
<tr>
<td>用户名:<input type="text"name="user.name"/></td>
<td>密 码: <input type="password"name="user.passWord"/></td>
</tr>
<tr>
<td><inputtype="submit" name="b1"value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
<!--------------------------------------------成功页面convertSuccess.jsp-------------------------------------------------->
<%@ page language="java" import="java.util.*"pageEncoding="gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" +request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>AddUser</title>
</head>
<body>
<table>
<tr>
<td>用户名:<s:propertyvalue="user.name"/></td>
<td>密 码:<s:propertyvalue="user.passWord"/></td>
</tr>
</table>
</body>
</html>
<!-====================================================>
部署运行程序会 在用户名框上填 michael 密码框填123
会看到结果为:mchael 123 正常的结果
这是struts2 内置的类型转换器将字符串类型请求参数转换为复合类型
但是我想在一个用户名文本框中填写michael,123这样的字符串,
而想要的结果是和上面程序运行的结果一样,这时我们就要自定义类型转换
<!----------------------------------转换类型的jsp convertType.jsp------------------------------------------->
<%@ page language="java" import="java.util.*"pageEncoding="gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" +request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>AddUser</title>
</head>
<body>
<form action="convertType" method="post">
<table>
<tr>
<td>用户名:<input type="text"name="user"/></td>
</tr>
<tr>
<td><inputtype="submit" name="b1"value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
<!----------------------------------自定义类型转换类UserConvert.java-------------------------------------->
package com.book.struts.action;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.pojo.User;
public class UserConvert extends StrutsTypeConverter{
@Override
public Object convertFromString(Map arg0, String[] arg1, Classarg2) {
User user = new User();
String[] params = arg1[0].split(",");
user.setName(params[0]);
user.setPassWord(params[1]);
return user;
}
@Override
public String convertToString(Map arg0, Object arg1) {
User user = (User)arg1;
return"<"+user.getName()+","+user.getPassWord()+">";
}
}
<!------------------------------注册全局类型转换器-------------------------------->
在src目录下建一个xwork-conversion.properties文件
<!------------------xwork-conversion.properties-------------------------->
#指定com.pojo.User类型需要
#指定类型转换机制com.book.struts.action.UserConvert
com.pojo.User=com.book.struts.action.UserConvert
<!--------------------------end------------------------------------------------------>
运行程序在用户名框中填写 michael,123
程序正常运行结果是
用户名:michael
密码:123
注意在convertType.jsp中的用户名参数名为user而不是user.name
把UserConvert.java放在和ConverTypeAction.java同一目录下
基于ongl的类型转换
配置struts.xml
<?xml version="1.0"encoding="gbk"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 设置Web应用的默认编码集为gbk -->
<constant name="struts.i18n.encoding"value="gbk" />
<!-- 设置Web应用的默认Locale为zh_CN-->
<constant name="struts.locale" value="zh_CN"/>
<!-- 设置Struts2.1应用的国际化资源文件,多个文件中间可用逗号分隔-->
<constant name="struts.custom.i18n.resources"value="MessageResource,globalMessage" />
<!--设置Struts2.1应用是否处于开发模式,通常在开发调试阶段设为true,正式上线后可设为false-->
<constant name="struts.devMode" value="true"/>
<!-- 设置Struts2.1的默认主题为simple-->
<constant name="struts.ui.theme" value="simple"/>
<!-- 设置上传文件临时文件夹 -->
<constant name="struts.multipart.saveDir"value="/tmp" />
<package name="book" extends="struts-default"namespace="/">
<!-- 类型转换 start -->
<action name="convertType"class="com.book.struts.action.ConverTypeAction">
<result>convertSuccess.jsp</result>
</action>
<action name="convert" >
<result>convertType.jsp</result>
</action>
<!-- 类型转换 end-->
</package>
</struts>
<!-----------------------------------建立一个pojo类User.java--------------------------------------------------->
package com.pojo;
public class User {
private String name;
private String passWord;
private int id;
private String loginName;
public User(String name,String passWord){
this.name = name;
this.passWord = passWord;
}
public User(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
}
<!------------------------------------配置ActionConverTypeAction.java---------------------------------->
package com.book.struts.action;
import com.opensymphony.xwork2.ActionSupport;
import com.pojo.User;
@SuppressWarnings("serial")
public class ConverTypeAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
if(getUser().getName().equals("michael")&&getUser().getPassWord().equals("123")){
return SUCCESS;
}
return INPUT;
}
}
<!---------------------------------------类型转换页面convertType.jsp--------------------------------------->
<%@ page language="java" import="java.util.*"pageEncoding="gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" +request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>AddUser</title>
</head>
<body>
<form action="convertType" method="post">
<table>
<tr>
<td>用户名:<input type="text"name="user.name"/></td>
<td>密 码: <input type="password"name="user.passWord"/></td>
</tr>
<tr>
<td><inputtype="submit" name="b1"value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
<!--------------------------------------------成功页面convertSuccess.jsp-------------------------------------------------->
<%@ page language="java" import="java.util.*"pageEncoding="gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" +request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>AddUser</title>
</head>
<body>
<table>
<tr>
<td>用户名:<s:propertyvalue="user.name"/></td>
<td>密 码:<s:propertyvalue="user.passWord"/></td>
</tr>
</table>
</body>
</html>
<!-====================================================>
部署运行程序会 在用户名框上填 michael 密码框填123
会看到结果为:mchael 123 正常的结果
这是struts2 内置的类型转换器将字符串类型请求参数转换为复合类型
但是我想在一个用户名文本框中填写michael,123这样的字符串,
而想要的结果是和上面程序运行的结果一样,这时我们就要自定义类型转换
<!----------------------------------转换类型的jsp convertType.jsp------------------------------------------->
<%@ page language="java" import="java.util.*"pageEncoding="gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" +request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>AddUser</title>
</head>
<body>
<form action="convertType" method="post">
<table>
<tr>
<td>用户名:<input type="text"name="user"/></td>
</tr>
<tr>
<td><inputtype="submit" name="b1"value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
<!----------------------------------自定义类型转换类UserConvert.java-------------------------------------->
package com.book.struts.action;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.pojo.User;
public class UserConvert extends StrutsTypeConverter{
@Override
public Object convertFromString(Map arg0, String[] arg1, Classarg2) {
User user = new User();
String[] params = arg1[0].split(",");
user.setName(params[0]);
user.setPassWord(params[1]);
return user;
}
@Override
public String convertToString(Map arg0, Object arg1) {
User user = (User)arg1;
return"<"+user.getName()+","+user.getPassWord()+">";
}
}
<!------------------------------注册全局类型转换器-------------------------------->
在src目录下建一个xwork-conversion.properties文件
<!------------------xwork-conversion.properties-------------------------->
#指定com.pojo.User类型需要
#指定类型转换机制com.book.struts.action.UserConvert
com.pojo.User=com.book.struts.action.UserConvert
<!--------------------------end------------------------------------------------------>
运行程序在用户名框中填写 michael,123
程序正常运行结果是
用户名:michael
密码:123
注意在convertType.jsp中的用户名参数名为user而不是user.name
把UserConvert.java放在和ConverTypeAction.java同一目录下
相关文章推荐
- Struts2 类型转换流程
- struts2 类型转换器 Date型数据转换
- Struts2的类型转换
- struts2类型转换器、 类型转换错误 以及INPUT view
- struts2中类型转换
- Struts2复习(二)类型转换详解
- Struts2日期类型转换
- Struts2类型转换
- Struts2的类型转换实例详解
- Struts2 的类型转换
- Struts2的类型转换实例
- Struts2学习7---集合类型的类型转换
- Struts2类型转换的说明及案例分析
- struts2自定义类型转换(2)基于StrutsTypeConverter
- struts2 类型转换
- Struts2开发基本配置与类型转换
- struts2中的类型转换
- 4.1.4: Struts2的类型转换---自定义类型转换器
- struts2中Double类型的转换
- Struts2---->类型转换