Struts提供的类型转换有限,如果我们强行使用没有的类型转换,则会出现错误,以Date类型为例:org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalArgumentException: Cannot invoke com.tgb.struts1.TypeCovertActionForm.setUtilDate - argument type mismatch
在此我们来建立java.util.Date的转换器。
Servlet版
Converter
数据转换器,代码如下:
package com.tgb.struts1;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.ConversionException;
import com.sun.org.apache.commons.beanutils.Converter;
public class UtilDateConverter implements org.apache.commons.beanutils.Converter {
public Object convert(Class type, Object value) {
if (value instanceof Date) {
return (value);
}
Date date=null;
if (value instanceof String) {
try {
date=new SimpleDateFormat("yyy-MM-dd").parse((String)value);
} catch (Exception e) {
e.printStackTrace();
}
}
return date;
}
}
Servlet
为的是将上面的转换器注册到ConvertUtils中:
package com.tgb.struts1;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.commons.beanutils.ConvertUtils;
public class UtilServlet extends HttpServlet {
public void init()throws ServletException
{
ConvertUtils.register(new UtilDateConverter(), java.util.Date.class);
}
}
配置文件
在web.xml中添加配置,因为转换器在Tomcat启动之时就加载,所以此处要将load-on-startup设置为大于0的值:
<servlet>
<servlet-name>UtilServlet</servlet-name>
<servlet-class>com.tgb.struts1.UtilServlet</servlet-class>
<load-on-startup>10</load-on-startup>
</servlet>
测试
jsp
<h4>测试struts的转换器</h4>
<form action="typeconvert.do" method="post" >
int value:<input type="text" name="intValue" /> <br/>
double value:<input type="text" name="doubleValue" /> <br/>
boolean value:<input type="text" name="booleanvVlue" /> <br/>
java.sql.date:<input type="text" name="sqlDate" /> <br/>
java.util.date:<input type="text" name="utilDate" /> <br/>
<input type="submit" value="提交" /> <br/>
</form>
结果
plugin版
plugin
package com.tgb.struts1;
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;
public class UtilDateConverterPlugin implements PlugIn {
public void destroy() {
// TODO Auto-generated method stub
}
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
ConvertUtils.register(new UtilDateConverter(), java.util.Date.class);
}
}
配置文件
在struts-config中放入:
<plug-in className="com.tgb.struts1.UtilDateConverterPlugin" />
测试结果
总结
在此体会到面向抽象编程所带来的可扩展的好处,这篇博客中的两个自定义的转换器过程基本一致:实现接口写出转换器、更改配置文件保证可以在Tomat加载即注册。
更多相关博客,请至《层层递进Struts1(八)之总结》
分享到:
相关推荐
方块箭头层层递进PPT图形.pptx
层层递进达成目标PPT模板素材.pptx
层层递进达成目标PPT模板素材下载。
在层层递进中挖掘探究的魅力之循环的嵌套.pdf
四部分层级递进PPT模板.pptx,这PPT模板的排版让人看起来有那么一种简洁而又高大上的感觉,每个圆环加上阴影就会显得层层递进,这样会使你的文本显得层层递进,让人一目了然''''
幻灯片图表设计了层层递进的圆环,附带设计了箭头、立体圆形等PPT背景图片,是一套递进关系PPT图表,适合用来制作PowerPoint里面的递进、流程图; 关键词:立体幻灯片图表,递进、流程图PPT图表,.PPT关系图,.PPTX...
四部分箭头图示PPT素材.pptx,四部分箭头图示PPT,适用于分析四部分层层递进关系等各种情况,可以用在课堂教学PPT,产品推介PPT,销售培训PPT中,图文并茂的四部分箭头图示,层层递进,使展示更有说服力。
圆形递进图示PPT模板.pptx,圆形递进图示PPT,适用于分析递进关系或者因果关系的各种情况,可以用在课堂教学PPT中,产品发布PPT中,项目介绍PPT中,圆形箭头指示,递进关系明显,因果分析清晰,易得出结论。
五部分递进图示PPT素材.pptx,五部分递进图示PPT,适用于分析递进关系或者五步骤的各种情况,可以用在课堂教学PPT中,产品介绍PPT中,会议PPT中,圆形箭头指示,使得PPT展示生动有趣,简单易解。
适用于准备1+x考试的同学,希望在考前可以拿这些题目先练练,熟悉一下或者测试一下,如果觉得自己的理论知识还不是很熟悉的话,可以在我的主页找一下【1+X】的模块,里面的理论模块知识是层层递进的,后面的几篇的的...
新版译林版小学五年级英语上册第七单元测试题及答案.pdf
课程编排层层递进、深入浅出,难度逐步提升,让没有基础的同学也能 跟上学习的脚步。在适当之处,辅以课后习题,加深知识点认知的同时 提升动手能力。核心知识零基础环境开发搭建。 本套课程的编排层层递进、...
本课程采用由浅入深,层层递进的讲解方式, 让你轻松掌握SpringBoot的快速构建Spring项目的方式,并且还深入剖析SpringBoot内部核心原理,如:自动配置原理,start原理,自定义start等, 让你知其然,知其所以然 ...
精美3d立体效果的层级递进关系PowerPoint图表素材免费下载; 本图表带有人物剪影和数据标示以及文字说明; 关键词:3d立体幻灯片图表模板,层级关系,递进关系,PowerPoint关系图,台阶幻灯片背景图片,.PPTX格式; ...
架空输电线路雷击事故严重影响电网的安全。以某35 kV输电线路实际参数为基础,采用...考虑经济问题,对于防雷措施选择的逻辑关系层层递进,实验结果理解,并对所得结论进行分析讨论,对于架空输电线路防雷工作有重要意义。
然后将重点放到了VS原理中,通过层层递进,说明了如下问题: 比如为什么通过生成依赖项配置可以使用汇编程序?生成依赖项到底是什么意思? 生成自定义是如何改变.vcxproj项目文件的?项目文件的变化又是如何导致生成...
本书层层递进,包括试验讲解,非常经典易懂
基于最新的 Python 版本,零基础带你搭建开发环境,从无到有、从易到难、层层递进,逐步走进 Python 的世界。既有详细的知识点介绍,又有通俗易懂的典型案例分析,还有从无到有的代码 实践,让你看得懂、学得会、做...
多种CRC校验方法,层层递进的思路,适合初学者