jsp前台中接收的均是string类型的数据,struts中有内至的转换器,能转换常规类型的数据,如int,float, double, string, boolean(Y/N 1/0 true/false on/off), .时间型:java.sql.Date(2009-12-23)可以转换。但java.util.Date不能转换。那我们就写一个utilDate的转换器。 若数据为空,int, 默认是0 , double默认是0.0, boolean默认是false. java.sql.Date 前台不能为空,且格式必须是yyyy-MM-dd类型 java.sql.Timestamp 要求:Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff 如:2010-02-12 12:25:20.0 utilDate的转换器 类: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.beanutils.Converter; /** * java.util.Date struts转换器 * @author dell * */ public class UtilDateConverter implements Converter { public Object convert(Class type, Object value) { Date d = null; if(value == null){ return value; } if(value instanceof String){ SimpleDateFormat sfd = new SimpleDateFormat("yyyyy-MM-dd"); try { d = sfd.parse((String) value); } catch (ParseException e) { e.printStackTrace(); } } return d; } } 转换器初始化加载方式2种: 一是Sverlet初始化init import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import org.apache.commons.beanutils.ConvertUtils; public class UtilDateServlet extends HttpServlet { /** * 初始化:注册UtilDateConverter转换器 * * @throws ServletException if an error occure */ public void init() throws ServletException { ConvertUtils.register(new UtilDateConverter() , Date.class ); } } web.xml <!-- java.util.Date struts转换器初始化 --> <servlet> <servlet-name>UtilDateServlet</servlet-name> <servlet-class>com.zd.util.UtilDateServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> 二、是用plugin加载 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; /** * PlugIn方式加载 java.util.Date转换器 * @author dell * */ public class UtilDatePlugIn implements PlugIn { public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { ConvertUtils.register(new UtilDateConverter() , Date.class ); } public void destroy() { // TODO Auto-generated method stub } } struts-config.xml <!-- 嵌入java.util.Date类型转换器 --> <plug-in className="com.util.UtilDatePlugIn" /> ============================================= 自定义struts Converter解决不能输入空日期 http://hi.baidu.com/wodehao1985h/blog/item/111709189714024d42a9ad79.html ============================================= 在Struts中的时间类型转换 在struts中前台页面只能传String类型的值,时间类型就需要在后面转换了。DateConvertUtil类: private java.util.Date saveDate; //普通的set/get方法 public void setSaveDate(java.util.Date saveDate){ this.saveDate=saveDate; } public java.util.Date getSaveDate(){ return this.saveDate; } //为Struts准备的方法,时期的格式假定是 2000-12-31 23:59:59 public void setSaveDateAsString(String saveDate){ java.text.DateFormat dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); this.saveDate=dateFormat.parse(saveDate); } public String getSaveDateAsString(){ java.text.DateFormat dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return dateFormat.Format(this.saveDate); 在action里面获得时间类型的字符串,然后调用转换方法就可以了。Ok!!! }
struts1自定义类型转换
猜你喜欢
转载自87029274.iteye.com/blog/1356072
今日推荐
周排行