Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Liferay 6.1+;SpringMVCPortlet4.0:友好的URL映射_Spring_Spring Mvc_Liferay_Portlet_Spring Portlet Mvc - Fatal编程技术网

Liferay 6.1+;SpringMVCPortlet4.0:友好的URL映射

Liferay 6.1+;SpringMVCPortlet4.0:友好的URL映射,spring,spring-mvc,liferay,portlet,spring-portlet-mvc,Spring,Spring Mvc,Liferay,Portlet,Spring Portlet Mvc,我正试图让友好的URL映射在Liferay 6.1中为SpringMVCPortlet工作,但失败了 我对liferayportletxml的添加符合可用的手册和博客示例,如下所示: <friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class> <friendly-url-mapping>sear

我正试图让友好的URL映射在Liferay 6.1中为SpringMVCPortlet工作,但失败了

我对
liferayportletxml
的添加符合可用的手册和博客示例,如下所示:

<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>
我的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,则只会出现呈现阶段的输出,不会调用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_生命周期
参数


欢迎提出任何建议。

我对Liferay中的友好URL知之甚少。 但我相信你不能从url中完全删除
p\u p\u生命周期
,因为

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

  • 0告诉Liferay仅呈现portlet

  • 而1告诉Liferay调用process Action方法

假设您想从某个动作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>

我不知道Liferay,但我会先看看POST/GET中发生了什么,
portlet:actionUrl
生成的内容与您直接使用Chrome的开发工具或FireFox的FireBug调用它时发生的内容一致。然后,您可以使用curl,从一个能正常工作的请求的精确副本开始,然后开始删除内容,直到它停止工作。这将识别导致一个请求触发而另一个请求未触发的原因。要查找的内容:HTTP请求类型(POST/GET/etc)、发送的任何头、发送的任何POST/GET VAR等。将这些行放入portal-ext.properties后,我会确认url中不再存在ist p_auth。
<pattern>"your URL pattern"</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">"Your action"</implicit-parameter>
portlet.add.default.resource.check.enabled=false
auth.token.check.enabled=false