posts - 431,  comments - 344,  trackbacks - 0
          關(guān)鍵字:   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);

           // 其它內(nèi)容...

          // 響應(yīng)服務(wù)
          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);

           // 調(diào)用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布局視圖頁面.

          // 讀取模板內(nèi)容,模板由liferay-layout-templates.xml文件定義.
          String content = LayoutTemplateLocalUtil.getContent(
           layoutTypePortlet.getLayoutTemplateId(), false, theme.getThemeId());
           下面是一個(gè)一列的模板:
           <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 周銳 閱讀(984) 評論(1)  編輯  收藏 所屬分類: Portal
          主站蜘蛛池模板: 海原县| 镇康县| 克什克腾旗| 四川省| 高唐县| 涟源市| 兴城市| 合山市| 长兴县| 临沂市| 冕宁县| 永登县| 澳门| 临猗县| 清远市| 喀喇| 霍城县| 麦盖提县| 兴海县| 平凉市| 香港 | 德钦县| 襄垣县| 西吉县| 永善县| 内黄县| 无为县| 保山市| 邵阳县| 明星| 兖州市| 略阳县| 五莲县| 长宁县| 陵水| 宿州市| 宁阳县| 新兴县| 东莞市| 昌宁县| 申扎县|