Liferay 6.1+;SpringMVCPortlet4.0:友好的URL映射
我正试图让友好的URL映射在Liferay 6.1中为SpringMVCPortlet工作,但失败了 我对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
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方法
<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