首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2 学习札记12-类型转换

2012-11-15 
Struts2 学习笔记12--类型转换类型转换1、默认转换日期的处理??? ??? 使用s:date format”yyyy-MM-dd HH:m

Struts2 学习笔记12--类型转换

类型转换
1、默认转换
日期的处理
??? ??? 使用<s:date format=”yyyy-MM-dd HH:mm:ss” name=”date”>标签,具体见文档

?

Struts2有对应的拦截器已经做了一些默认的转换
?? 参数传递转换:

?

?

?

图 没有提示的错返回页面

?

当然,我们还可以在页面上加上错误提示信息,通过在AddProducts.jsp的“<body>”后,加入下面代码可以实现:


?图 带提示的错返回页面

Struts 2.0里的一个名为conversionError的拦截器(interceptor)工作,它被注册到默认拦截器栈(default interceptor stack)中。

?

Struts 2.0在转换出错后,会将错误放到ActionContext中,在conversionError的作用是将这些错误封装为对应的项错误(field error),因此我们可以通过<s:fielderror />来将其在页面上显示出来。另外,大家看第二和第三行的Price都被赋为0.0的值,而第一行则保留其错误值。这同样是conversionError的功劳——没有出错的行调用的products[index].price(默认值为0.0),而出错的行则会被赋为页面所提交的错误值,这样可以提供更好的用户体验。


如:

public class MyPointConverter extends DefaultTypeConverter{    @Override    public Object convertValue(Object value, Class toType) {        if(toType == Point.class) {            Point p = new Point();            String[] strs = (String[])value;            String[] xy = strs[0].split(",");            p.x = Integer.parseInt(xy[0]);            p.y = Integer.parseInt(xy[1]);            return p;        }        if(toType == String.class) {            return value.toString();        }        return super.convertValue(value, toType);    }}public class MyPointConverter extends StrutsTypeConverter{    @Override    public Object convertFromString(Map context, String[] values, Class toClass) {                    Point p = new Point();            String[] strs = (String[])values;            String[] xy = strs[0].split(",");            p.x = Integer.parseInt(xy[0]);            p.y = Integer.parseInt(xy[1]);            return p;                    }    @Override    public String convertToString(Map context, Object o) {        // TODO Auto-generated method stub        return o.toString();    }}

?c)?? ?三种注册方式:

?? i.?? ?局部:XXXAction-conversion.properties
??????? 1.?? ?p(属性名称) =? converter
?? ii.?? ?全局:xwork-conversion.properties
??????? 1.?? ?com.xxx.XXX(类名)= converter
?? iii.?? ?Annotation
?d)?? ?如果遇到非常麻烦的映射转换
?? i.?? ?request.setAttribute();
?? ii.?? ?session

剩下部分内容:

1.??? Lambda表达式
2.??? 验证框架
3.??? UI标签
4.??? 类型转换中的异常处理
5.??? 上传与下载文件
6.??? Struts2注解

?

热点排行