2016-01-21 4 views
1

У меня есть портлет, разработанный на платформе Liferay, в котором я добавил логику, чтобы получить значение параметра запроса из URL-адреса. У меня есть сайт: http://localhost:8080/web/guest/example. Теперь этот сайт вызывается с другого внешнего сайта, который не находится в Liferay с параметром запроса в конце: http://localhost:8080/web/guest/example?value=test. В коде портлета Liferay я применил логику, чтобы получить значение параметра из URL-адреса, который не работает. Она возвращает «нулевое» значение:Получение значения параметра из URL-адреса не работает

HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(request)); 
     String myValue = httpReq.getParameter("value");  
     System.out.println(myValue); 

Я попытался это слишком, но получить то же «нулевое» значение из параметра запроса:

HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request); 
     String myValue = httpRequest.getParameter("value"); 
     System.out.println(myValue); 

Любого предложение, что я здесь делаю неправильно или как могу Я получаю значение параметра запроса, поступающего с внешнего сайта?

+0

Пробовал ли вы его использовать с помощью 'request.getQueryString()'? –

+0

Я думаю, что вы, возможно, пропустили false в файле liferay-portlet.xml – Gautam

ответ

1

Я просто попытался следующие внутри doView() и это работает для меня:

HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(renderRequest); 
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq); 
String myValue = httpOrigReq.getParameter("value"); 

Единственное различие (может быть), что я использовал RenderRequest-объект. (Как я не вижу тип вашего request -объект.)

+0

Я использовал объект RenderRequest, и это сработало для меня. Благодаря!!! – TechPro

1

Если произошло не установить

<render-weight>0</render-weight> 
    <ajaxable>true</ajaxable> 

в liferay-portlet.xml, портлет будет оказана через Ajax и больше не в том же HTTP-запрос. Я пробовал: без этих настроек ваш код (первый вариант) прошел хорошо (в методе doView).

Однако плохой практикой в ​​любом случае полагаться на доступ к параметрам случайного запроса (на портале) ... Вы должны построить полный URL-адрес портала или использовать функции дружественного URL-адреса для Liferay. Таким образом, вы действительно находитесь в мире портала, а не в произвольном сочетании сервлетов и портлетов.

+0

Привет, Олаф Кок, я проверил свой liferay-portlet.xml на местном, я не имеют настройки, связанные с рендером-весом и ajaxable, но все же я получаю значение null для параметра. В качестве параметра запроса на внешнем сайте будет указано несколько значений, которые относятся к одному портлету в Liferay, а те значения, которые передаются через параметр запроса, должны быть вставлены в базу данных. Если мне нужно создать дружественные URL-адреса, такие как put? Value = test в конце URL-адреса, Liferay не принимает параметр запроса в конце в качестве дружественного URL-адреса. – TechPro

+0

, вы можете написать больше кода, потому что код, который вы публикуете выше, работает для меня. –

+0

Olaf Kock, у меня есть портлет формы, когда пользователь вводит данные и отправляет, он вводит данные в базу данных. В view.jsp У меня есть поля для ввода имен и данных, таких как FisrtName .... Затем есть вызов функции класса Java для вставки введенных данных в базу данных. Чтобы проверить параметр запроса, я не предоставил никакого значения в коде, просто используя приведенный выше код, чтобы получить параметр запроса из URL. В локальном тестировании я просто поставляю параметр запроса как: http: // localhost: 8080/web/guest/example? Value = test и заполняя форму и отправляя. Значение, которое я получаю как параметр запроса, равно null. – TechPro

 Смежные вопросы

  • Нет связанных вопросов^_^