Liferay дружественный URL с необязательным параметром - PullRequest
0 голосов
/ 01 октября 2019

У моего URL есть несколько параметров, поэтому я использую дружественные URL-адреса, чтобы решить, какие уродливые 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 параметромработает, но я не хотел бы видеть null в моем URL.

Я хочу что-то вроде "":

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>

Как я могу указать необязательность параметра?

1 Ответ

0 голосов
/ 02 октября 2019

Как и все переменные дружественного URL, используйте регулярное выражение. Вы можете изменить / переопределить это регулярное выражение следующим образом: {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 7.0

...