科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道对多分发命令Action的支持(方案一)

对多分发命令Action的支持(方案一)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在我们日常基于Struts处理的操作中,已经大量的沿用了DispatchAction处理方式,本文就来给大家讲解如何通过扩展,让Liferay实现对多分发命令Action的支持。

作者:银狐999 来源:CSDN 2008年3月3日

关键字: java Action 多分发

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)


public class DispatchPortletAction extends DispatchAction {
    
protected ActionForward dispatchMethod(ActionMapping mapping,
            ActionForm form, HttpServletRequest request,
            HttpServletResponse response, String name) 
throws Exception {

        PortletConfig portletConfig 
= (PortletConfig) request
                .getAttribute(WebKeys.JAVAX_PORTLET_CONFIG);

        RenderRequest renderRequest 
= (RenderRequest) request
                .getAttribute(WebKeys.JAVAX_PORTLET_REQUEST);

        RenderResponse renderResponse 
= (RenderResponse) request
                .getAttribute(WebKeys.JAVAX_PORTLET_RESPONSE);

        
if (name == null{
            
return this.unspecified(mapping, form, portletConfig,
                    renderRequest, renderResponse);
        }


        Method method 
= null;
        
try {
            method 
= getMethod(name);

        }
 catch (NoSuchMethodException e) {
            String message 
= messages.getMessage("dispatch.method",
                    mapping.getPath(), name);
            log.error(message, e);

            String userMsg 
= messages.getMessage("dispatch.method.user",
                    mapping.getPath());
            
throw new NoSuchMethodException(userMsg);
        }


        ActionForward forward 
= null;
        
try {
            Object args[] 
= { mapping, form, portletConfig, renderRequest,
                    renderResponse }
;
            forward 
= (ActionForward) method.invoke(this, args);

        }
 catch (ClassCastException e) {
            String message 
= messages.getMessage("dispatch.return",
                    mapping.getPath(), name);
            log.error(message, e);
            
throw e;

        }
 catch (IllegalAccessException e) {
            String message 
= messages.getMessage("dispatch.error",
                    mapping.getPath(), name);
            log.error(message, e);
            
throw e;

        }
 catch (InvocationTargetException e) {
            Throwable t 
= e.getTargetException();
            
if (t instanceof Exception) {
                
throw ((Exception) t);
            }
 else {
                String message 
= messages.getMessage("dispatch.error",
                        mapping.getPath(), name);
                log.error(message, e);
                
throw new ServletException(t);
            }

        }

        
return (forward);
    }


    
protected String getMethodName(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response,
            String parameter) 
throws Exception {

        String methodName 
= request.getParameter(parameter);
        
if (methodName == null || methodName.length() == 0{
             methodName 
=
 (String) request.getAttribute(parameter);
        }

        
return methodName;
    }


    
public ActionForward unspecified(ActionMapping mapping, ActionForm form,
            PortletConfig config, RenderRequest req, RenderResponse res)
            
throws Exception {
        
return null;
    }

    
private static Log log = LogFactory.getLog(DispatchPortletAction.class);
    
protected Class[] types = { ActionMapping.class, ActionForm.class,
            PortletConfig.
class, RenderRequest.class, RenderResponse.class }
;
}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章