posts - 431,  comments - 344,  trackbacks - 0
          關鍵字:   liferay    

          // 初始化
          portal.servlet.MainServlet.init()
           // process startup events
           StartupAction.run()

           // 初始化portlets.
           String[] xmls = new String[] {
            Http.URLtoString(ctx.getResource("/WEB-INF/portlet.xml")),
            Http.URLtoString(ctx.getResource("/WEB-INF/portlet-ext.xml")),
            Http.URLtoString(ctx.getResource("/WEB-INF/liferay-portlet.xml")),
            Http.URLtoString(ctx.getResource("/WEB-INF/liferay-portlet-ext.xml")),
            Http.URLtoString(ctx.getResource("/WEB-INF/web.xml"))
           };
           PortletLocalServiceUtil.initEAR(xmls)

           // 初始化display.
           String xml = Http.URLtoString(ctx.getResource(
             "/WEB-INF/liferay-display.xml"));
           PortletCategory newPortletCategory =
            PortletLocalServiceUtil.getEARDisplay(xml);
           portletCategory.merge(newPortletCategory);

           // 初始化layout模板.
           String[] xmls = new String[] {
            Http.URLtoString(ctx.getResource(
             "/WEB-INF/liferay-layout-templates.xml")),
            Http.URLtoString(ctx.getResource(
             "/WEB-INF/liferay-layout-templates-ext.xml"))
           };
           LayoutTemplateLocalUtil.init(ctx, xmls)

           // 初始化Theme.
           String[] xmls = new String[] {
            Http.URLtoString(ctx.getResource(
             "/WEB-INF/liferay-look-and-feel.xml")),
            Http.URLtoString(ctx.getResource(
             "/WEB-INF/liferay-look-and-feel-ext.xml"))
           };
           ThemeLocalUtil.init(ctx, xmls)

           // 檢查company
           CompanyLocalServiceUtil.checkCompany(_companyId);

           // 其它內容...

          // 響應服務
          portal.servlet.MainServlet.service()
           
           // get portalContext
           ServletContext ctx = getServletContext();
           ServletContext portalCtx = ctx.getContext(
            PrefsPropsUtil.getString(_companyId, PropsUtil.PORTAL_CTX));
           
           // Struts module config
           ModuleConfig moduleConfig = getModuleConfig(req);

           // Portlet Request Processor - 在struts.config中定義.
           portletReqProcessor = PortletRequestProcessor.getInstance(this, moduleConfig);

           // 登錄處理.

           // 處理service前置事件.
           EventsProcessor.process(PropsUtil.getArray(PropsUtil.SERVLET_SERVICE_EVENT_PRE), req, res);

           // 調用Struts的service方法.
           callParentService(req, res);

           // 處理Sruts后置事件.
           EventsProcessor.process(PropsUtil.getArray(PropsUtil.SERVLET_SERVICE_EVENTS_POST), req, res);
           
          // struts的ActionServlet.
          ActionServlet.process(HttpServletRequest req, HttpServletResponse res)
           processor.process(req, res);

          // portal的RequestProcessor.
          portal.struts.PortalRequestProcessor.process(HttpServletRequest req, HttpServletResponse res)
            
           // struts的RequestProcessor
           RequestProcessor.process(HttpServletRequest req, HttpServletResponse res)

            string path = processPath(req, res)  // PortalRequestProcessor重載

            ActionMapping mapping = processMapping(req, res, path);

            processRoles(req, res, mapping) // PortalRequestProcessor重載

            ActionForm from = processActionForm(req, res, mapping);

            processForward(req, res, mapping);

            processInclude(req, res, mapping);

            Action action = processActionCreate(req, res, mapping);

            ActionForward forward = processActionPerform(req, res, action, form, mapping);

            processForwardConfig(req, res, forward);  // TilesRequestProcessor重載
            
           // tiles的RequestProcessor
           TilesRequestProcessor.processForwardConfig(req, res, forward)

            processTilesDefinition(forward.getPath(), forward.getContextRelative(), req, res);

             Controller.execute();  // 輸出/portal/layout.jsp


          /html/portal/layout.jsp  - portal布局頁面.
           
          此處include在/portal-ejb/classes/portal.properties里layout.view.page定義的頁面/portal/layout/view/portlet.jsp

          /html/portal/layout/view/portlet.jsp  - portlet布局視圖頁面.

          // 讀取模板內容,模板由liferay-layout-templates.xml文件定義.
          String content = LayoutTemplateLocalUtil.getContent(
           layoutTypePortlet.getLayoutTemplateId(), false, theme.getThemeId());
           下面是一個一列的模板:
           <div id="layout-content-outer-decoration">
           <div id="layout-content-inner-decoration">
            <div id="layout-content-container">
             $processor.processColumn("column-1")
            </div>
           </div>
           </div>

          // 處理模板
          portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(
            application, pageContext, request, response, content);
           

           // 注入模板處理程序
           TemplateProcessor processor = new TemplateProcessor(ctx, req, res, portletId);
           VelocityContext context = new VelocityContext();
           context.put("processor", processor); 
           // 處理模板
           Velocity.evaluate(context, pageContext.getOut(),
            RuntimePortletUtil.class.getName(), content); 

          posted on 2007-01-28 09:59 周銳 閱讀(985) 評論(1)  編輯  收藏 所屬分類: Portal
          主站蜘蛛池模板: 高台县| 鹿泉市| 多伦县| 兴海县| 城固县| 绥滨县| 延安市| 涞水县| 于田县| 财经| 上栗县| 咸丰县| 蓬溪县| 林周县| 三穗县| 杭州市| 巴中市| 麻江县| 望城县| 枣庄市| 龙泉市| 鄂托克前旗| 来安县| 丹阳市| 塔城市| 潮州市| 阿巴嘎旗| 宕昌县| 南召县| 隆化县| 万盛区| 汪清县| 济源市| 台中市| 辽源市| 景德镇市| 离岛区| 克什克腾旗| 浏阳市| 扶沟县| 恩施市|