我正在尝试获取友好的 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
任何建议都受到热烈欢迎。