struts2类型转换

来源:互联网 发布:视频广告过滤大师 mac 编辑:程序博客网 时间:2024/06/11 13:44
在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>                      

原创粉丝点击