Liferay portlet: redirect to an other jsp page from javascript

梦想与她 提交于 2019-12-01 23:48:40

Liferay needs to know the target portlet for any request parameter that you add to an URL - otherwise it ignores any unknown parameter. The ID of the target portlet is either defined as p_p_id or it is a prefix of the parameter (in which case you can define parameters for more than one portlet in one URL).

So in your case you will have to set renderUrl1.setPortletId('...your portlet id'); to let your portlet see mvcPath and param.

In addition the mvcPath must be absolute (start with a /) and below the configured templatePath (defaults to /).

Try this:

In your JSP ->

<portlet:renderURL var="myRenderURL">
  <portlet:param name="jspName" value="display.jsp" />
</portlet:renderURL>

<aui:a href="#" cssClass="myLink" label="Click me" />

<aui:script>
  A.one('.myLink').on('click', function () {
    window.location.href = '${myRenderURL}';
  });
</aui:script>

Then in your java portlet class ->

@Override
public void doView(RenderRequest request, RenderResponse response) 
    throws IOException, PortletException {

  String jspName = ParamUtil.getString("jspName", "view.jsp");
  include("path/to/your/jsp/" + jspName, request, response);

}

One last note: Starting with Liferay 6.2, portlet urls created with javascript methods mentioned in the OP above will

  • not include authentication tokens (p_auth, p_p_auth)
  • not be converted to friendly urls by the portal.

Also see the Liferay Documentation on this.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!