【问题标题】:How do I get Liferay's Javascript PortletURL module to work with friendly URL mappings?如何让 Liferay 的 Javascript PortletURL 模块使用友好的 URL 映射?
【发布时间】:2012-08-06 16:18:54
【问题描述】:

我已经为我的 Liferay portlet 设置了友好的 URL 路由,当我生成带有标准 JSP 标记的 URL 时,它工作正常,如下所示:

<portlet:renderURL var="resetUrl">
    <portlet:param name="start" value="5" />
</portlet:renderURL>

根据我的映射,它会生成一个可爱的 URL,例如:

localhost:8080/web/guest/welcome/-/myportlet/5

但是当我使用 JavaScript PortletURL 模块生成 URL 时,我得到了完整的不友好 URL。例如:

var filterUrl = Liferay.PortletURL.createRenderURL();
filterUrl.setPortletId("<%= portletDisplay.getId() %>");
filterUrl.setParameter("start", "5");
location.href = filterUrl;

会生成

localhost:8080/web/guest/welcome?p_p_id=myportlet_WAR_MyPortletportlet&p_p_lifecycle=0&myportlet_WAR_MyPortletportlet_start=5

所以我的问题是: 如何从 JavaScript 生成友好的 URL?

【问题讨论】:

    标签: javascript liferay portlet liferay-6


    【解决方案1】:

    没有简单的方法可以做到这一点。您将不得不重写portal_url.js 和PortletURLAction.java。 另一种选择是编写自己的 portlet,可以根据需要生成 URL 并通过 AJAX 访问它。

    【讨论】:

      【解决方案2】:

      您可以尝试的一件事是这种方法,有点棘手 -

                      <portlet:actionURL var="copyNavigationPointURL">
                          <portlet:param name="myaction" value="copy-navigation-point"></portlet:param>
                          <portlet:param name="objectTypeId" value="changeObjType"></portlet:param>
                          <portlet:param name="navigationPointId" value="changeNavPointId"></portlet:param>
                      </portlet:actionURL>
      

      然后编写 javascript 并像这样替换参数值 -

      function copyNavigationPoint(copyNavigationPointURL) {
          var copyNavId = document.getElementById("navigationPointId").value;
          if (copyNavId==null || copyNavId=='null'){
              alert('error');
              return;
          }
          var objectTypeId = document.getElementById("objectTypeId").value;
          copyNavigationPointURL = copyNavigationPointURL.replace(/changeObjType/i,objectTypeId);
          copyNavigationPointURL = copyNavigationPointURL.replace(/changeNavPointId/i,copyNavigationPointId);
      
          submitForm(document.hrefFm, copyNavigationPointURL);
      }
      

      你有你的友好网址。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-14
        • 2012-12-24
        • 2019-01-30
        • 2012-10-21
        • 2012-10-22
        • 2013-02-07
        • 2016-01-13
        • 1970-01-01
        相关资源
        最近更新 更多