Liferay 6.1 + Spring MVC Portlet 4.0:友好的URL映射

时间:2014-03-31 15:51:47

标签: spring spring-mvc liferay portlet spring-portlet-mvc

我试图让友好的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";
  }
}

如果我使用/baseurl/-/search/bar调用我的portlet,只发生渲染阶段输出,则不会调用操作方法。

如果我使用

创建指向此页面的链接
<portlet:actionURL var="lastStepUrl">
  <portlet:param name="foo" value="bar" />
</portlet:actionURL>

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

欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

我对Liferay中的友情网址了解不多。 但我相信您无法从网址中完全删除p_p_lifecycle,因为。

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

  • 0告诉Liferay只渲染portlet,

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

假设您想从某些操作网址中删除,那么可以像这样删除

<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.xml file.same方式,以便我们可以放置任何渲染URL 0

要删除p_auth,请尝试在portal-ext.properties文件

中添加以下属性
portlet.add.default.resource.check.enabled=false
auth.token.check.enabled=false