您的位置:首页 > 编程语言 > Java开发

Struts2中的类型转换器学习(升级版)

2016-04-24 18:59 337 查看

原理

原理和我的另外一篇相同的一样。(此次是局部类型转换,全局请看另外一篇)

继承StrutsTypeConverter….之后重写方法

主要文件有以下:Convert.java、UserAction-conversion.properties、UserAction.java、User.java、type.jsp

解释:

UserAction.java 是测试用的Aciton

UserAction-conversion.properties是配置要转换类型的参数

Convert.java 是类型转换的核心

不多说,直接代码:

Convert.java

package cn.type;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class Convert extends StrutsTypeConverter{

@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
// TODO Auto-generated method stub
System.out.print("类型转换器开启...date:");
if(arg1==null||arg2==null){
return null;
}
if(Date.class!=arg2){
return null;
}
System.out.println(arg1[0]+"class:"+arg2.toString());
SimpleDateFormat sdf =null;
Date date=null;
/*
* 定义 Date类型数据能够转换的几种类型。
* yyyyMMdd必须要写全,如19860210
*
*/
/*
*
* 类型转换器开启...date:2016-07-02class:class java.util.Date
usernmae: xiaoming
password:
date: 2015-12-7 0:00:00
*/
String[] parse = new String[]{"yyyy-MM-dd","yyyy,MM,dd","yyyy/MM/dd","yyyyMMdd"};
for(String p :parse){
for(String str : arg1){
if(str!=null){
sdf= new SimpleDateFormat(p);
try {
date = sdf.parse(str);
return date;
} catch (Exception e) {
// TODO: handle exception
continue;
}
}
}
}
return null;
}

@Override
public String convertToString(Map arg0, Object arg1) {
// TODO Auto-generated method stub
return null;
}

}


UserAction-conversion.properties

user.date=cn.type.Convert


UserAction.java

package cn.type;

import java.util.Map;

import cn.entity.User;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.util.ValueStack;

public class UserAction extends ActionSupport {
private User user = new User();

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public String login(){
//值栈! 此是传入root根元素中。
ValueStack vs = ActionContext.getContext().getValueStack();
vs.set("username", user.getUsername()+" root");

System.out.println("usernmae: "+user.getUsername());
System.out.println("password: "+user.getPassword());
System.out.println("date: "+user.getDate().toLocaleString());
return "login";
}
public String register(){
System.out.println("usernmae: "+user.getUsername());
System.out.println("password: "+user.getPassword());
System.out.println("date: "+user.getDate().toLocaleString());
return "debug";
}

}


User.java

package cn.entity;

import java.util.Date;

public class User {
private String username;
private String password;
private Date date;
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;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}


type.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'model.jsp' starting page</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>
<h3>类型转换</h3>
<p>类型转换的原理是:xml方式配合代码。代码继承StrutsTypeConverter</p>
<form action="type_v1_loginAction" method="post">
用户名:<input name="user.username" type="text"/><s:fielderror /><br/>
密码:<input name="user.password" type="password"><s:fielderror fieldName="password"/><br/>
日期:<input name="user.date" type="text"/><s:fielderror fieldName="date"/><br/>
<input type="submit" value="提交"/>
</form><br>
<br/>
El:{username:${username}}<br/>
ognl:{root:<s:property value="username"/>、map栈:<s:property value="#request.username"/>}<br/>
</body>
</html>


Struts.xml

<!-- 类型转换 -->
<action name="type_v1_*Action" class="cn.type.UserAction" method="{1}">
<result name="success">/success.jsp</result>
<result name="input">/type.jsp</result>
<result name="login">/type.jsp</result>
<result name="debug">/inpue.jsp</result>
</action>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts struts2.0