`
zybing
  • 浏览: 457891 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Roller:EntryAdd

阅读更多

 

Roller的EntryAdd Action,继承自 : ActionSupport ---> UIAction --- > EntryBase ---> EntryAdd,

 

UIAction 同时实现了 : UIActionPreparable,  UISecurityEnforced 接口

 

在struts配置中,定义了一个Interceptor:

            <interceptor name="UIActionInterceptor" 
                         class="org.apache.roller.weblogger.ui.struts2.util.UIActionInterceptor" />

这个Interceptor的主要工作就是对Action进行赋值:User 和 Weblog。

 

UIActionInterceptor的主要代码:

    public String intercept(ActionInvocation invocation) throws Exception {
        
        log.debug("Entering UIActionInterceptor");
        
        final Object action = invocation.getAction();
        final ActionContext context = invocation.getInvocationContext();
        
        HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
        
        // is this one of our own UIAction classes?
        if (action instanceof UIAction) {
            
            log.debug("action is a UIAction, setting relevant attributes");
            
            UIAction theAction = (UIAction) action;
            
            // 在Action中设置登陆的用户名

            // extract the authenticated user and set it
            RollerSession rses = RollerSession.getRollerSession(request);
            if(rses != null) {
                theAction.setAuthenticatedUser(rses.getAuthenticatedUser());
            }
            
            // 在Action中设置Weblog

            // extract the work weblog and set it
            String weblogHandle = theAction.getWeblog();
            if(!StringUtils.isEmpty(weblogHandle)) {
                Weblog weblog = null;
                try {
                    UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
                    weblog = mgr.getWebsiteByHandle(weblogHandle);
                    if(weblog != null) {
                        theAction.setActionWeblog(weblog);
                    }
                } catch(Exception e) {
                    log.error("Error looking up action weblog - "+weblogHandle, e);
                }
            }
        }
        
        return invocation.invoke();
    }
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics