struts DispatchAction 的应用

kiver149 2009-10-07 10:00:40
如何自己定义一个BaseAction类继承DispatchAction类让BaseAction实现通用增删改查的功能。
就好像newxy的通用的DispatchAction一样。

net.newxy.struts_faces.DispatchAction继承自struts的org.apache.struts.actions.DispatchAction
二、net.newxy.struts_faces.DispatchAction的重要方法
1、getActionForward
public ActionForward getActionForward(ActionMapping actionMapping,HttpServletRequest httpServletRequest){
String frwd=httpServletRequest.getParameter("_frwd");
if(frwd!=null && frwd.trim().length()>0)
return actionMapping.findForward(frwd);
else{
if(actionMapping.getInputForward().getPath()!=null)
return actionMapping.getInputForward();
else{
httpServletRequest.setAttribute("message",net.newxy.cfg.Message.getMessage("errors.path")+";please give a forward for action");
return actionMapping.findForward("error");
}
}
}


2、find
public ActionForward find(ActionMapping actionMapping, ActionForm actionForm,
HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception{
......
return getActionForward(actionMapping,httpServletRequest);

}
public ActionForward update(ActionMapping actionMapping, ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception{
......
net.newxy.struts_faces.FormBean form=(net.newxy.struts_faces.FormBean)actionForm;
try{
Object dto=form.getDto();
IFacade ifacade=IFacadeFactory.getFacade(httpServletRequest.getParameter("_dao"), httpServletRequest.getLocale());
Object result=ifacade.update(dto);
......
}catch(Exception e){
......
}
......
return getActionForward(actionMapping,httpServletRequest);
}

public ActionForward remove(ActionMapping actionMapping, ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception{
......
String index=httpServletRequest.getParameter("_index");
try{
IFacade ifacade=IFacadeFactory.getFacade(httpServletRequest.getParameter("_dao"), httpServletRequest.getLocale());
if (index != null) {
net.newxy.util.FormBeanUtils.remove(ifacade, form, index);
} else
net.newxy.util.FormBeanUtils.remove(ifacade, form);
}catch(Exception e){
httpServletRequest.setAttribute("error",e.getMessage());
return actionMapping.findForward("error");
}
......
return getActionForward(actionMapping,httpServletRequest);
}

5、edit
public ActionForward edit(ActionMapping actionMapping, ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception{
......
net.newxy.struts_faces.FormBean form=(net.newxy.struts_faces.FormBean)actionForm;
  String _index=httpServletRequest.getParameter("_index");
  if(_index==null)
 _index=form.get_index();
  if(_index!=null)
 form.setForm(_index);
   ......
   return getActionForward(actionMapping,httpServletRequest);
}

不知道哪些高手在这方面有过研究,提供些意见
最好能够提供源码参考我的邮箱是kiver149@163.com谢谢分享
...全文
98 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bdceo 2009-10-08
了解楼主的意思,只是增删改查,虽然很没技术含量,但是要想所有模块都统一化,好似需要设计一下
就拿删除来说,要是考虑级联的话,通用性可就要设计的复杂多了
并且假如你在BaseAction里定义了C-R-U-D的操作,具体的Action再去继承它,
我怎么确定特定的Action调用哪个业务层的Service或Manager呢?
......
或者这样,是不是在请求一个Action的add方法时我们还需要传递处理这个add的特定Service呢?
这样在BaseAction里我们可以通过反射得到这个Service进行进一步处理
哈哈,我想可能这样还行,只是还没试过
......
要是这样能实现的话,我想Struts也就做了这层封装
......
暂且想这么多,还望楼主解决后也能贴出代码多多交流!

  • 打赏
  • 举报
回复
zhanghai921 2009-10-07
你把基本的操作封装到baseaction。其他的action继承这个baseaction。
  • 打赏
  • 举报
回复
zhuhichn 2009-10-07
你是说通用的增删改查功能,这个要用到泛型了,因为这要求对不同的实体进行操作。而且我认为这个功能不应在action里面写,应该在逻辑那块写,在manager类里面,我有一些通用的方法,包括基本的增删改查和分页功能,不过是基于hibernate的。
  • 打赏
  • 举报
回复
kiver149 2009-10-07
[Quote=引用 3 楼 ghyghost 的回复:]
其它的Action类继承自baseaction就行了,我现在的项目就这么用的
[/Quote]
但baseaction具体要怎么实现呢
  • 打赏
  • 举报
回复
其它的Action类继承自baseaction就行了,我现在的项目就这么用的
  • 打赏
  • 举报
回复
kiver149 2009-10-07
[Quote=引用 1 楼 jinchun1234 的回复:]
在parameter里面设置参数名称method。
http://blog.csdn.net/jinchun1234/archive/2009/06/13/4266583.aspx
看看这个就知道了
[/Quote]
我的意思是做个通用BaseAction然后所有的模块最基本的增删改查都能调用这个BaseAction中的方法
  • 打赏
  • 举报
回复
jinchun1234 2009-10-07
在parameter里面设置参数名称method。
http://blog.csdn.net/jinchun1234/archive/2009/06/13/4266583.aspx
看看这个就知道了
  • 打赏
  • 举报
回复
发帖
Web 开发

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
加入社区
帖子事件
创建了帖子
2009-10-07 10:00
社区公告
暂无公告