欢迎来到天天文库
浏览记录
ID:25986365
大小:109.00 KB
页数:4页
时间:2018-11-24
《struts2自定义类型转换器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、文章内容来自Java私塾2013-12-27struts2自定义类型转换器11.3 自定义类型转换器11.3.1概述虽然内建类型转换器能满足绝大多数的需求,但是,有的时候还是需要使用自定义类型转换器来实现特定的需求。还是用前面的长方形来说明,如果用两个文本框分别输入长方形的高和宽,整个类型装换都没有问题,它可以工作的很好。但是,如果我们想在一个文本框内同时输入宽和高(width:height),形如16:9,这个时候就需要自定义类型转换器了。11.3.2实现自定义类型转换器自定义类型转换器的实现非常简单,写一个类,继承Stru
2、tsTypeConverter抽象类,该类在org.apache.struts2.util包内,这个抽象类有两个方法需要我们实现:·publicObjectconvertFromString(Mapcontext,String[]values,ClasstoClass)方法,实现字符串向对象的转换,它有三个参数:l context:转换上下文,可以在里面引用各种对象,比如:可以通过context.get(ValueStack.VALUE_STACK)来引用值栈。l values:用户输入的字符串。l
3、 toClass:将要被转换成的对象类型。·publicStringconvertToString(Mapcontext,Objecto)方法,实现对象向字符串的转换,它有两个参数:l context:同上,也是转换的上下文。l o:需要被转换的对象。实现示例功能的自定义类型转换器,示例代码如下: java代码:查看复制到剪贴板打印1.public class RectangleConverter extends StrutsTypeConverter { 2. /** 3.
4、 * 长方形向字符串转换 4. */ 5. public Object convertFromString(Map context, String[] values, Class toClass) { 6. //用户输入,比如16:9 7. String userInput = values[0]; 8. String[] arr = userInput.split(":"); 9. //在真正的格式转换之前,先把所有的用户输入可能的错误拦截住
5、10. if (arr.length!=2){ 更多内容在‘java私塾官网’文章内容来自Java私塾2013-12-271. throw new TypeConversionException("请输入正确的长方形格式如,width:height"); 2. } 3. try{ 4. Rectangle rectangle = new Rectangle(); 5. int width = Integer.pa
6、rseInt(arr[0]); 6. int height = Integer.parseInt(arr[1]); 7. rectangle.setWidth(width); 8. rectangle.setHeight(height); 9. return rectangle; 10. }catch(RuntimeException e){ 11. throw new TypeConversi
7、onException("请输入正确的长方形格式如,width:height",e); 12. } 13. } 14. /** 15. * 字符串向长方形转换 16. */ 17. public String convertToString(Map context, Object o) { 18. Rectangle rectangle = (Rectangle) o; 19. return "长方形:宽"+rectangle.getWidt
8、h()+",高"+rectangle.getHeight(); 20. } 21.} 在这里,需要注意在convertFromString方法中,用户输入的字符串很可能是不符合要求的,所有的不符合要求的情况都要抛出TypeConversionExce
此文档下载收益归作者所有