`

Struts中FormBean的日期类型字段赋值自动转化

    博客分类:
  • Java
阅读更多

前面整理了Jsp中useBean中字符串和时间的转化操作,然后到Struts中试了一下,发现,Struts中转化时间用的不是java.beans.PropertyEditorManager,而是通过BeanUtil处理的,在网上找了一下,发现过程和前一篇中的差不多,只不过,继承的类不一样,注册的方法不一样了,下面看下处理的过程。

首先,创建DateConverter对象,使其继承org.apache.commons.beanutils.Converter接口,简单实现如下:

package com.zywang.util.extend;

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

import org.apache.commons.beanutils.Converter;

/**
 * @author ZYWANG 2009-6-22
 */
public class DateConverter implements Converter {

	private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
	/* (non-Javadoc)
	 * @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object)
	 */
	@Override
	public Date convert(Class arg0, Object arg1) {
		// TODO Auto-generated method stub
		if(arg1 instanceof String){
			try {
				return format.parse((String)arg1);
			} catch (ParseException e) {
				e.printStackTrace();
				return null;
			}
		}
		return null;
	}

}

 然后找个位置,比如上次我们在过滤器中init方法中注册的,这次也可以在过滤器的init方法中注册,注册代码如下:

package com.zywang.util.extend;

import java.io.IOException;
import java.util.Date;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.commons.beanutils.ConvertUtils;

/**
 * JSP页面乱码处理过滤器
 * @author ZYWANG 2009-6-20
 * Servlet Filter implementation class ChangeEncoding
 */
public class SetCharacterEncodingFilter implements Filter {

    /**
     * Default constructor. 
     */
    public SetCharacterEncodingFilter() {
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// place your code here
		request.setCharacterEncoding("GB18030");
		// pass the request along the filter chain
		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		//注册JavaBean日期转化器
		java.beans.PropertyEditorManager.registerEditor(java.util.Date.class, DatePropertyEditor.class);
		
		//注册Struts的日期转化对象
		ConvertUtils.register(new DateConverter(), Date.class);
	}

}

 使用这种方法就可以实现提交表单的数据的自动转化为日期类型了。

 

 另外在网上看到另外一种实现方法,这个方法首先需要创建DateConvertPlugIn对象,使其实现org.apache.struts.action.PlugIn接口,然后在改对象的init方法中注册,最后再将该对象以插件的方式注册到Struts中

DateConvertPlugIn的示例代码如下:

/**
 * 
 */
package com.zywang.util.extend;

import java.util.Date;

import javax.servlet.ServletException;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;

/**
 * @author ZYWANG 2009-6-22
 */
public class DateConvertPlugIn implements PlugIn {

	/* (non-Javadoc)
	 * @see org.apache.struts.action.PlugIn#destroy()
	 */
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		ConvertUtils.deregister(Date.class);
	}

	/* (non-Javadoc)
	 * @see org.apache.struts.action.PlugIn#init(org.apache.struts.action.ActionServlet, org.apache.struts.config.ModuleConfig)
	 */
	@Override
	public void init(ActionServlet arg0, ModuleConfig arg1)
			throws ServletException {
		// TODO Auto-generated method stub
		ConvertUtils.register(new DateConverter(), Date.class);
	}

}

 在Struts中注册的代码是:

 

<plug-in className="com.zywang.util.extend.DateConvertPlugIn"></plug-in>

 这样也可以达到我们目的,但这两种做法哪个更好,在下就搞不明白了。

 附件是我测试用的DEMO,实现了JavaBean中日期的转化和Struts的FormBean中日期的转化,及两种Struts下注册方法(插件方式、过滤器方式)。

分享到:
评论

相关推荐

    Struts1.2动态FormBean加验证功能的一个例子

    Struts1.2动态FormBean 加 验证功能 的一个例子

    struts1&struts2

    2.Struts2和Struts1.x的... Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。 Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。

    struts1和struts2的区别

    Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。 虽然,在理论上Struts2的...

    struts中数据在action与jsp中的传递总结.pdf

    Struts 中数据在 Action 与 JSP 中的传递总结 Struts 框架中,数据在 Action 与 JSP 之间的传递是一种常见的需求。为了实现这种传递,Struts 提供了多种方式,本文将对这些方式进行总结。 方式一:通过 FormBean ...

    利用java反射校验struts中的form(含正则表达式)

    利用java反射校验struts中的formbean 在struts框架中,如果每次都去校验form中的每个字段,显然费时费力,本例通过java反射得到form中的字段和值,并较验,用于在与数据库交互之前的校验,从而防止数据库恶意注入. 随包...

    Struts 1 学习文档

    在 Struts 中,Controller 是一个 Servlet,称为 ActionServlet。ActionServlet 负责截取和分发 HTTP 请求到相应的动作类。动作类用于实现核心商业逻辑,可以访问 Java Bean 或调用 EJB。 5. View View 主要由 JSP...

    struts2 (对象.属性)注入

    在struts2中已经不需要struts1中的formbean了。在struts1中每次提交表单的时候,表单中的属性值都先赋予formbean,然后操作formbean。但是现在struts2中用对象.属性名来给对象赋值,然后操作这个对象。而这些对象都...

    谈谈你对Struts的理解。

     4.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml...

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    在弹出的菜单中,根据图例提示,选择Myeclipse后在弹出的二级菜单中选择Add Struts Capabilities…后提示如下图所示: 在弹出的对话框中,设置如下: Struts config path:默认,一般不需要改变。 Struts ...

    全开架图书管理系统图书管理模块struts框架设计以及实现毕业论文.doc

    FormBean是Struts框架中的表单bean,负责处理用户输入的数据。在图书管理系统中,FormBean可以设计为处理图书信息的输入和验证。 4.视图设计 视图层是Struts框架中的Presentation层,负责显示数据。在图书管理系统...

    struts高级实战进阶

    传智播客的struts高级实战进阶 MVC模式的回顾 回顾Struts的请求处理时序图 使用超连接的技巧 封装Formbean数据时的问题 防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 ...

    json java读取 formbean操作

    NULL 博文链接:https://haixiami200411.iteye.com/blog/736554

    Struts原理、开发及项目实施

    流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传...

    struts-config文件标签详解

    ClassName 属性指定了 FormBean 的实现类,name 属性指定了 FormBean 的名称,type 属性指定了 FormBean 的类型。 在 Form-bean 元素中,我们可以使用 Form-property 元素来设置 FormBean 的属性。Form-property ...

    Struts使用技巧和注意事项

    ----Struts 使用技巧---- 1 Struts validate 1.1 使用ActionForm的validate()验证 ...&gt; 配置FormBean: 配置FormBean中的validate()方法,处理相关验证; &gt; 配置Jsp:配置JSP中相关信息接受后台验证信息的处理结果;

    动态验证formbean

    介绍如何使用动态formbean的例子

    Struts html:checkbox框初始默认是选中的解决方法

    在Struts中几种情况可以使标签初始就是选中的,Formbean里面该Property的值设为 1.on 、2.yes 、3.true 这三种情况都是可以实现默认选中的。 注:如果不选中,最好把Property的设置为””,因为在Action中得到...

    java 经典面试题 于网络分享

    7. struts框架中,关于FormBean,下列哪些说法是正确的: A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证...

Global site tag (gtag.js) - Google Analytics