Liferay 相同的操作和渲染方法的友好 url

Posted

技术标签:

【中文标题】Liferay 相同的操作和渲染方法的友好 url【英文标题】:Liferay same friendly url for action and render method 【发布时间】:2014-07-26 02:05:18 【问题描述】:

我想在 liferay 中为渲染和操作方法定义相同的友好 url。

在 Friendly-url.xml 中是

<route>
    <pattern>/create/parent</pattern>
    <generated-parameter name="parent">parent</generated-parameter>
    <implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
    <implicit-parameter name="p_p_state">normal</implicit-parameter>
    <implicit-parameter name="p_p_mode">view</implicit-parameter>
    <implicit-parameter name="action">create</implicit-parameter>
</route>

<route>
    <pattern>/create/parent</pattern>
    <generated-parameter name="parent">parent</generated-parameter>
    <implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
    <implicit-parameter name="p_p_state">normal</implicit-parameter>
    <implicit-parameter name="p_p_mode">view</implicit-parameter>
    <implicit-parameter name="action">create</implicit-parameter>
</route>

差别只在 p_p_lifecycle。

在jsp中是表单:

<liferay-portlet:actionURL var="saveUrl">
    <liferay-portlet:param name="action" value="create" />
    <liferay-portlet:param name="parent" value="$parent" />
</liferay-portlet:actionURL>

<form:form method="post" action="$saveUrl" commandName="thesaurus" enctype="multipart/form-data">
...
</form>

在控制器中我有两种方法:

@RenderMapping(params =  "action=create" )
public String create(RenderRequest request, RenderResponse response, Model model, @RequestParam String parent)

@ActionMapping(params =  "action=create" )
public void create(ActionRequest request, ActionResponse response, @RequestParam String parent, @Valid Thesaurus thesaurus, BindingResult result)

当我提交表单时,没有调用 action 方法。 但是当我改变动作方法的模式时,例如

<pattern>/createX/parent</pattern>

一切正常

在Liferay 中不能有action 方法和render 方法相同的模式吗?还是我在某个地方有错误?

【问题讨论】:

【参考方案1】:

portlet actionrender 是两个截然不同且不同的生命周期。正如您正确体验的那样,您不能为两者拥有一个(相同的)URL。门户应该如何知道您只想渲染而不是执行操作。

使用从模式映射到实际 URL 的友好 URL - 因此模式必须是唯一的。

【讨论】:

以上是关于Liferay 相同的操作和渲染方法的友好 url的主要内容,如果未能解决你的问题,请参考以下文章

省略 Liferay 友好 URL 中的减号“-”

如何在 PrettyFaces 的帮助下将长的 Liferay URL 映射到友好的 URL?

liferay 6.1 中的友好 URL

带有可选参数的 Liferay 友好 URL

如何在 Liferay 门户中实现友好 URL

如何在liferay中制作友好的网址