疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Struts中的Converter可以将一些特定对象转换成字符串,比如int、boolean、double等。例如:它会将1,y,on,yes转换成true.具体的实现要

参阅org.apache.commons.beanutils.Converter下的ConvertUtils.class类。下面是自己参照这个类写了一个转换java.util.date数据类型的

例子:
首先建一个类实现Converter接口。
package com.struts.myconvert;

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

import org.apache.commons.beanutils.Converter;

/**
 * java.util.Date转换器
 * @author Administrator
 *
 */
public class UtilConvert implements Converter {

 public Object convert(Class type, Object value) {
  if (value == null) {
   return value;
  }
  
  if (value instanceof Date) {
   return value;
  }
  
  if (value instanceof String) {
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
  
             try {
   return format.parse(value.toString());
   } catch (ParseException e) {   
    e.printStackTrace();
   }
   
  }
  return value;
 }
}

然或建一个servlet用来注册这个ava.util.Date转换器:
package com.struts.convert_servlet;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.ConvertUtils;

import com.bjsxt.struts.myconvert.UtilConvert;

public class Myconvert extends HttpServlet {

 
 public void init() throws ServletException {
  ConvertUtils.register(new UtilConvert(),Date.class);//调用ConvertUtils的register方法
 }
}
当然要在web.xml中配置这个servlet:
<servlet>
    <servlet-name>Myconvert</servlet-name>
    <servlet-class>com.struts.convert_servlet.Myconvert</servlet-class>
     <load-on-startup>3</load-on-startup>
  </servlet>
下面是具体的测试页面:
index.jsp的主要代码:
<form action="convert.do" method="post">
    utildate_vlaue:<input type="text" name="utildatevalue">
                   <input type="submit" value="submit">
  </form>
相应的actionForm:
package com.struts.myconvert;

import java.text.SimpleDateFormat;

import org.apache.struts.action.ActionForm;

public class ConvertActionForm extends ActionForm {

  private java.util.Date utildatevalue;


public java.util.Date getUtildatevalue() {
 return utildatevalue;
}

public void setUtildatevalue(java.util.Date utildatevalue) {
 this.utildatevalue = utildatevalue;
}
 
}
相应的action页面:
package com.struts.myconvert;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class ConvertAction extends Action {

 @Override
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  ConvertActionForm cf = (ConvertActionForm)form;
  
  return mapping.findForward("success");
 }

}
struts-config.xml中的配置:
<form-beans>
<form-bean name="convertActionForm" type="com.struts.myconvert.ConvertActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/convert"
        type="com.struts.myconvert.ConvertAction"
        name="convertActionForm"
        scope="request"
 >
 <forward name="success" path="/success.jsp"></forward>
</action>

</action-mappings>
显示页面success.jsp:
主要代码:${convertActionForm.utildatevalue}
然后当你在index.jsp中的输入框中输入:1987-11-11 2-12-45(只能按照UtilConvert类中的yyyy-MM-dd HH-mm-ss格式输入)
提交后就会显示如下:Wed Nov 11 02:12:45 CST 1987


当然这例子只是一个实现,用处很小,有很大的局限性。


评论

# re: 初探struts中的(Converter)的一个例子[未登录]  回复  更多评论   

2007-12-03 20:07 by 笨笨
很多人都看过了,呵呵,加油!

# re: 初探struts中的(Converter)的一个例子[未登录]  回复  更多评论   

2008-10-03 15:42 by 小天
谢谢 刚好在书上看到没列子

只有注册用户登录后才能发表评论。


网站导航: