Liferay 友好 url 带有可选参数
Liferay friendly url with optional param
我的 URL 有一些参数,所以我使用友好的 URLs 来解决丑陋的 URL liferays 默认生成。
这几个参数有时是空的,这意味着它不需要,但其他时候给我一些用于查询的 ID。
示例参数不是 null
:
https://myliferay.com/example-portlet/-/example-portlet/search/idTable-7
//it works
示例 null
参数:
https://myliferay.com/example-portlet/-/example-portlet/search/idTable-null
//it works
使用 null
参数可以工作,但我不喜欢在我的 URL 上看到 null
。
我想要 ""
:
https://myliferay.com/example-portlet/-/example-portlet/search/idTable-
//Doesnt work
但是它不起作用,就像 URL 在参数为空时不匹配友好的 URL 模式。
<route>
<pattern>/search/idTable-{idTable}</pattern>
<generated-parameter name="idTable">{idTable}</generated-parameter>
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
<!--more implicit params-->
</route>
如何指定参数的可选性?
它就像所有友好 url 的变量一样使用正则表达式。您可以 change/override 像这样的正则表达式:{idTable:\d}
<route>
<pattern>/search/idTable-{idTable:.*}</pattern>
<generated-parameter name="idTable">{idTable}</generated-parameter>
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
<!--more implicit params-->
</route>
我使用 .*
作为 0 个或更多字符的正则表达式,但我不知道以后是否会给我带来问题。如果有人知道为什么使用该正则表达式不是一个好主意,请发表评论。
使用 \d*
升级了正则表达式以仅搜索数字或空的:{idTable:\d*}
我的 URL 有一些参数,所以我使用友好的 URLs 来解决丑陋的 URL liferays 默认生成。
这几个参数有时是空的,这意味着它不需要,但其他时候给我一些用于查询的 ID。
示例参数不是 null
:
https://myliferay.com/example-portlet/-/example-portlet/search/idTable-7
//it works
示例 null
参数:
https://myliferay.com/example-portlet/-/example-portlet/search/idTable-null
//it works
使用 null
参数可以工作,但我不喜欢在我的 URL 上看到 null
。
我想要 ""
:
https://myliferay.com/example-portlet/-/example-portlet/search/idTable-
//Doesnt work
但是它不起作用,就像 URL 在参数为空时不匹配友好的 URL 模式。
<route>
<pattern>/search/idTable-{idTable}</pattern>
<generated-parameter name="idTable">{idTable}</generated-parameter>
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
<!--more implicit params-->
</route>
如何指定参数的可选性?
它就像所有友好 url 的变量一样使用正则表达式。您可以 change/override 像这样的正则表达式:{idTable:\d}
<route>
<pattern>/search/idTable-{idTable:.*}</pattern>
<generated-parameter name="idTable">{idTable}</generated-parameter>
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
<!--more implicit params-->
</route>
我使用 .*
作为 0 个或更多字符的正则表达式,但我不知道以后是否会给我带来问题。如果有人知道为什么使用该正则表达式不是一个好主意,请发表评论。
使用 \d*
升级了正则表达式以仅搜索数字或空的:{idTable:\d*}