Liferay 6.1 + Spring MVC Portlet 4.0:友好的URL映射
我想要获得友好的URL映射,以便为Liferay 6.1内部的Spring MVC portlet工作并失败。Liferay 6.1 + Spring MVC Portlet 4.0:友好的URL映射
我到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";
}
}
如果我使用0123调用我的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此页面的链接。它正确执行操作阶段,我也可以直接调用该URL。但是,它确实包含我想摆脱的p_auth
和p_p_lifecycle
参数。
任何建议热烈欢迎。
我对Liferay中的友情链接了解不多。 但我相信你不能从url完全删除p_p_lifecycle
,因为。
此参数告诉Liferay要执行的操作。该参数有两个值(0或1)。
0告诉Liferay的,只是呈现的portlet,
而1告诉Liferay的调用过程操作方法。
比方说,你想从某个动作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.xml
file.same方式任何渲染的网址,我们可以把0
要删除p_auth
尝试portal-ext.properties
文件把下面的属性
portlet.add.default.resource.check.enabled=false
auth.token.check.enabled=false
将这些行放入portal-ext.properties ist p_auth后不再有更多存在于url中。 – suatCoskun
我不了解Liferay,但是我会首先看看POST/GET中发生的事情,即'portlet:actionUrl'正在产生,与您直接使用类似Chrome的开发工具或FireFox萤火。然后你可以使用curl,从一个可以工作的请求的确切副本开始,然后开始移除,直到停止工作。这将确定是什么导致一个请求触发,另一个请求不触发。需要寻找的东西:HTTP请求类型(POST/GET/etc。),任何正在发送的头文件,正在发送的任何POST/GET vars等。 – CodeChimp