1

我正在尝试获取友好的 URL 映射以适用于 Liferay 6.1 中的 Spring MVC portlet 并失败。

我的补充liferay-portlet-xml是根据可用的手册和博客示例,如下所示:

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>search</friendly-url-mapping>
<friendly-url-routes>com/.../friendly-url-routes.xml</friendly-url-routes>

friendly-url-routes.xml存在

<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.1.0//EN"
          "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_1_0.dtd">
<routes>
  <route>
    <pattern>/{match}</pattern>
    <generated-parameter name="foo">{match}</generated-parameter>
  </route>
</routes>

我的 Spring MVC 控制器就像

@Controller
@RequestMapping("VIEW")
public class CarModelController {

  @ActionMapping
  public void action(@RequestParam("foo") final String testParam,
            final ActionRequest request, final ActionResponse response) {
    this.logger.info("default action");
    this.logger.info("testParam = {}", testParam);
  }

  @RenderMapping
  public String render(final RenderRequest request, final RenderResponse response) {
    this.logger.info("default render");
    return "index";
  }
}

如果我只使用呈现阶段输出调用我的 portlet /baseurl/-/search/bar,则不会调用 action 方法。

如果我使用创建指向此页面的链接

<portlet:actionURL var="lastStepUrl">
  <portlet:param name="foo" value="bar" />
</portlet:actionURL>

Liferay 生成的 URL 看起来像/baseurl/-/search/bar?p_auth=sometoken&p_p_lifecycle=1. 它正确执行了动作阶段,我也可以直接调用该 URL。但是,它确实包含了我想要去掉的p_auth和参数。p_p_lifecycle

任何建议都受到热烈欢迎。

4

1 回答 1

2

我对 Liferay 中的友好 URL 了解不多。但我相信你不能完全p_p_lifecycle从 url 中删除,因为。

这个参数告诉 Liferay 要执行哪个动作。此参数有两个值(0 或 1)。

  • 0 告诉 Liferay 只渲染 portlet,

  • 而 1 告诉 Liferay 调用流程 Action Method。

假设您想从某个操作 URL 中删除,然后可以这样做

<pattern>"your URL pattern"</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">"Your action"</implicit-parameter>

正如我们所知道的 1 用于动作阶段,我们可以硬编码并将其放入routes.xmlfile.same 的任何渲染 URL 中,我们可以将 0

要删除p_auth尝试将以下属性放入portal-ext.properties文件中

portlet.add.default.resource.check.enabled=false
auth.token.check.enabled=false
于 2014-04-22T19:27:16.530 回答