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>
相关文章推荐
- JQuery+Strusts1.x无刷新登录
- java struts常见错误以及原因分析
- Struts之logic标签库详解
- 通过实例深入学习Java的Struts框架中的OGNL表达式使用
- Java的Struts框架中append标签与generator标签的使用
- struts2的select标签用法实例分析
- SSH框架网上商城项目第20战之在线支付平台
- 在Java的Struts框架下进行web编程的入门教程
- 详解Java的Struts框架中注释的用法
- java中struts 框架的实现
- 利用Java的Struts框架实现电子邮件发送功能
- 在Java的Struts框架中ONGL表达式的基础使用入门
- 详解Java的Struts框架中栈值和OGNL的使用
- Java的Struts框架简介与环境配置教程
- Java的Struts框架中的if/else标签使用详解
- 简单说明Java的Struts框架中merge标签的使用方法
- 详解Java的Struts框架中上传文件和客户端验证的实现
- Java的Struts框架中Action的编写与拦截器的使用方法
- sprng和struts有什么区别?
- Java的Struts框架中<results>标签的使用方法