Проверьте содержимое URL-адреса текущей страницы в шаблоне скорости Liferay.

Я пытаюсь узнать текущее содержимое и параметры URL-адреса страницы в файле liferay Velocity (vm). Таким образом я могу получить текущий URL-адрес страницы.

Я пытался расшифровать URL

 http://localhost:8080/web/guest/sign-in?p_p_id=45&p_p_lifecycle=0&_58_redirect=‌​%2Fgroup%2Femployee%2FmainForm%3FempName%3DABC

используя следующий способ

#set($absoluteUrl= $theme_display.getURLCurrent())
#set ($test=$httpUtil.decodeURL($absoluteUrl)) 

Теперь я получаю URL как

/web/guest/sign-in?p_p_id=58&p_p_lifecycle=0&_58_redirect=/group/employee/mainForm?empName=ABC

Теперь я пытаюсь таким образом получить значение empName.

#set($empName= $request.getParameter("empName"))

Но все еще не можете ничего получить? Что мне не хватает? как я могу получить значение этого параметра сейчас?


person Java    schedule 19.06.2013    source источник


Ответы (4)


Вы можете проверить подстроки в скорости следующим образом:

#set ($url = $themeDisplay.getURLCurrent())

#if($url.contains("&empName=ABC"))
The url contains the string <b>&empName=ABC<b>
#else
The url does not contain the string <b>&empName=ABC</b>
#end

Если вы хотите проверить наличие параметра запроса перед проверкой его содержимого:

#set($empName = $request.getParameter("empName"))

#if (!$empName) 
<h1>Parameter not found</h1>
#else
<h1>Parameter found: $empName</h1>
#end`

Протестировано в Liferay 6.1.1 ce ga2

person Alessandro Alessandra    schedule 19.06.2013
comment
Спасибо за быстрый ответ. Это работает, но как я могу проверить свое значение &empName, так как оно будет динамическим. Значит, сначала мы проверим, содержит ли URL-адрес &empName, и если ответ да, нам понадобится значение &empName , как этого добиться? - person Java; 19.06.2013
comment
и что, если URL-адрес содержит параметр в формате, например, empName% 3DABC, то как мы можем получить значение empName? - person Java; 21.06.2013
comment
На самом деле это не обычный формат http-запроса. Можете ли вы опубликовать весь URL в качестве примера? - person Alessandro Alessandra; 21.06.2013
comment
мой URL-адрес http равен http://localhost:8080/group/employee/mainForm?empName=ABC, и когда я вставляю этот URL-адрес в браузер, он меняется на http://localhost:8080/web/guest/sign-in?p_p_id=45&p_p_lifecycle=0&_58_redirect=%2Fgroup%2Femployee%2FmainForm%3FempName%3DABC, так как же проверить значение empName? - person Java; 24.06.2013
comment
URL-адрес перезаписывается сервером, и я вижу только следующие параметры: p_p_id p_p_lifecycle _58_redirect - person Alessandro Alessandra; 24.06.2013
comment
Вы можете проверить последний, который содержит то, что мне кажется строкой в ​​кодировке URL. Но я предполагаю, что исходный URL-адрес переписывается, потому что вам нужно войти в систему, тогда система сама перенаправит на исходный URL-адрес. - person Alessandro Alessandra; 24.06.2013
comment
@ да, вы правы, но как я могу проверить это закодированное строковое значение? - person Java; 25.06.2013
comment
Я расшифровал http://localhost:8080/web/guest/sign-in?p_p_id=45&p_p_lifecycle=0&_58_redirect=‌​%2Fgroup%2Femployee%2FmainForm%3FempName%3DABC , пожалуйста, смотрите мой обновленный вопрос - person Java; 26.06.2013
comment
@ Алессандро Алессандра, наконец, это сработало, я также добавил свой ответ. Тнакс Алессандро - person Java; 27.06.2013

Если URL-адрес выглядит следующим образом:

 http://localhost:8080/web/guest/sign-in?p_p_id=45&p_p_lifecycle=0&_58_redirect=‌​%2Fgroup%2Femployee%2FmainForm%3FempName%3DABC

Теперь мы можем декодировать этот URL как:

#set($url= $theme_display.getURLCurrent())
#set ($decodedUrl=$httpUtil.decodeURL($url)) 

Итак, я получаю URL как

/web/guest/sign-in?p_p_id=58&p_p_lifecycle=0&_58_redirect=/group/employee/mainForm?empName=ABC

Теперь мы можем получить значение empName следующим образом:

#set($empName=$decodedUrl.split("empName=").get(1)) 

Таким образом, мы получим значение $empName=ABC.

person Java    schedule 27.06.2013

$themeDisplay.getScopeGroup().getPathFriendlyURL($themeDisplay.getLayout().isPrivateLayout(),$themeDisplay)+$layout.getGroup().friendlyURL

это проверит, является ли страница частной компоновкой, и отобразит /[web|group]/[site-name]/

person randombrad    schedule 18.02.2015

Сравните текущий URL:

if($portal.getCurrentURL($request) == "/home")

or

if($portal.getCurrentURL($request).indexOf("/demo-demo")>=0)

Это возвращает все URL-адреса, начинающиеся с «demo-demo»;

person mithunSalinda    schedule 22.04.2015