struts2类型转换
2012-06-04 15:09
399 查看
在struts2中如何定义类型转化器 * 定于需求: * 完成java.lang.String--->java.util.Date类型的转化 例如20111212(Strung)---java.util.Date() * 在jsp页面增加组件 出生日期:<input type="text" name="createTime">要求输入格式yyyyMMdd<br> * 在action增加如下属性 private Date createTime; * 自定义类型转化器(注意转化失败时一定要抛出异常) public class DateConverter extends DefaultTypeConverter{ /** * * @param context:ongn上下文(?) * @param value:要转化的值,该值为数组:request.getParameterValues("createTime")--->String[] * @param toType:要转化的数据类型,这里为java.util.Date * @return:该方法的返回值就是,action中cteateTime属性要接受到的值 */ public Object convertValue(Map<String, Object> context, Object value, Class toType) { if(value==null){ return null; } if(toType==null){ return null; } if(toType!=java.util.Date.class){ return null; } if(value instanceof java.lang.String[]){ String[] str=(String[])value; try { if(str[0]!=null&&!"".equals(str[0])){ SimpleDateFormat sf=new SimpleDateFormat("yyyyMMdd"); return sf.parse(str[0]); } } catch (ParseException e) { e.printStackTrace(); /* * struts2的类类型转化异常是由 <interceptor name="conversionError" * class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor> * 类型转化错误拦截器处理的 * * 如果类型转化器转化数据出现了异常,则在类型转化器中必须抛出异常, * 类型转化错误拦截器 只有接受到异常,才转到错误处理页面 * * 如果类型转化器转化数据出现了异常没有抛出 * 类型转化错误拦截器 不能捕获到异常, 类型转化错误拦截器认为是正确的操作,所以不转到错误处理页面 */ throw new RuntimeException(e); } } return null; } } * 注册类型转化器 * 配置局部的(在与Action相同的目录下) * 创建属性文件格式:ActinClassName-conversion.properties * ActinClassName:action的类名 * -conversion.properties:固定写法 * 内容格式:待转化的属性名称=类型转化器的完整的类路径 * 本例属性文件 UserAction-conversion.properties * 内容:createTime=cn.itcast.converter.DateConverter cn/itcast/converter/UserAction--conversion.properties * 配置全局的(在src目录下) * 创建属性文件格式:xwork-conversion.properties(固定写法) * 内容格式:待转化的类型=类型转化器的完整的类路径 * 本例属性文件 :xwork-conversion.properties * 内容:java.util.Date=cn.itcast.converter.DateConverter * 在jsp页面显示详细的错误信息 * 引入struts2的标签库:<%@ taglib uri="/struts-tags" prefix="s"%> * 使用<s:fielderror/>标签显示错误信息 * struts2的转化错误类型拦截器,把错误信息放置到一个集合中 * <s:fielderror/>遍历集合,打印错误信息 * 默认的显示错误的信息是英文的,该信息在xwork-core-2.1.6.jar/com\opensymphony\xwork2下的 xwork-messages.properties文件中 xwork.default.invalid.fieldvalue=Invalid field value for field "{0}". {0}:Action中的属性:jsp页面的值转化为action中的属性 * 修改错误信息为中文 * 在与action同级的目录(其他目录也可)创建*.properties文件,文件的名称自定义,后缀名是.properties * 本例为 converter.properties * 增加如下内容 * 增加默认的提示(对所有的action中的属性都有效) xwork.default.invalid.fieldvalue=类型转化 出现了错误 "{0}". * 增加具体的对action中每个属性的提示: * 格式:invalid.fieldvalue.xxx=提示信息 xxx:表示action中的属性名称 * 本例:invalid.fieldvalue.createTime=转化createTime属性时出现了异常 * 具体的要覆盖默认的 * 加载自定义的国际化资源文件 * 配置加载自定义的国际化资源文件 * cn.itcast.converter.converter:加载cn.itcast.converter.converter.properties资源文件 * 在struts.xml文件中增加如下内容 <constant name="struts.custom.i18n.resources" value="cn.itcast.converter.converter"></constant>
相关文章推荐
- 为struts2自定义类型转换器:Date的转换
- 学习struts2 类型转换总结
- struts2--拦截器,拦截器栈interceptor struts2类型转换,struts2初级视频
- struts2 类型转换器笔记
- Struts2之类型转换
- struts2中的类型转换,从web页面传来的离散的值在后台封装成一个user对象
- Struts2---->类型转换
- struts2自定义类型转换(2)基于StrutsTypeConverter
- 关于Struts2的类型转换详解
- Struts2类型转换的作用
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【类型转换】
- struts2日期类型转换
- 4.1.6: Struts2的类型转换---基于Struts2的自定义类型转换器
- Struts2类型转换
- Struts2自定义类型转换
- struts2类型转换器日期转换小例详解
- Struts2中的数据类型转换
- 详解Struts2的类型转换(2)
- Struts2之自定义局部类型转换器、全局类型转换器
- Struts2之自定义局部类型转换器、全局类型转换器