浏览 2681 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-25
/** * 简单封装Struts DispatchAction的基类. * 提供一些基本的简化函数,将不断增强. * * @author calvin */ public class StrutsAction extends DispatchAction { public static final String SUCCESS = "success"; public static final String DIRECTLY_MESSAGE_KEY = "message"; static { registConverter(); } /** * 设置Struts 中数字<->字符串转换,字符串为空值时,数字默认为null,而不是0. * 也可以在web.xml中设置struts的参数达到相同效果,在这里设置可以防止用户漏设web.xml. */ public static void registConverter() { ConvertUtils.register(new IntegerConverter(null), Integer.class); ConvertUtils.register(new FloatConverter(null), Float.class); ConvertUtils.register(new DoubleConverter(null), Double.class); ConvertUtils.register(new DateConverter("yyyy-MM-dd"), Date.class); } /** * 将FormBean中的内容通过BeanUtils的copyProperties()绑定到Object中. * 因为BeanUtils中两个参数的顺序很容易搞错,因此封装此函数。 */ protected void bindObject(ActionForm form, Object object) { if (form != null) { try { BeanUtils.copyProperties(object, form); } catch (Exception e) { ReflectionUtils.handleReflectionException(e); } } } /** * 将Object内容通过BeanUtils的copyProperties 复制到FormBean中。 * 因为BeanUtils中两个参数的顺序很容易搞错,因此封装此函数。 */ protected void bindForm(ActionForm form, Object object) { if (object != null) { try { BeanUtils.copyProperties(form, object); } catch (Exception e) { ReflectionUtils.handleReflectionException(e); } } } public String get(HttpServletRequest request){ return (String)(request.getSession().getAttribute("")); } /** * 保存单条信息到Message的简化函数. */ protected void saveMessage(HttpServletRequest request, String key, String... values) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(key, values)); saveMessages(request.getSession(), messages); } /** * 直接保存文本信息(非i18n)到messages * * @param message 直接的文本信息 */ protected void saveDirectlyMessage(HttpServletRequest request, String message) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DIRECTLY_MESSAGE_KEY, message)); saveMessages(request.getSession(), messages); } /** * 保存单条信息到Error的简化函数. */ protected void saveError(HttpServletRequest request, String key, String... values) { ActionMessages errors = new ActionMessages(); errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(key, values)); saveErrors(request.getSession(), errors); } /** * 直接保存文本信息(非i18n)errors * * @param message 直接的文本信息 */ protected void saveDirectlyError(HttpServletRequest request, String message) { ActionMessages errors = new ActionMessages(); errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DIRECTLY_MESSAGE_KEY, message)); saveErrors(request.getSession(), errors); } /** * 直接输出纯字符串 */ public void renderText(HttpServletResponse response, String text) { try { response.setContentType("text/plain;charset=UTF-8"); response.getWriter().write(text); } catch (IOException e) { log.error(e.getMessage(), e); } } /** * 直接输出纯HTML */ public void renderHtml(HttpServletResponse response, String text) { try { response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(text); } catch (IOException e) { log.error(e.getMessage(), e); } } /** * 直接输出纯XML */ public void renderXML(HttpServletResponse response, String text) { try { response.setContentType("text/xml;charset=UTF-8"); response.getWriter().write(text); } catch (IOException e) { log.error(e.getMessage(), e); } } } 该类中封装了很多工具方法, 像bindObject() 等 ,我认为应该单独封装成工具类例如StrutsActionUtils,而不应该利用继承方式强加给子类 如果采用这种继承的方式,到最后Action类将变成一个万能的类 几乎所有的web层操作都可以封装,这也违背了面向对象设计的思想 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |