передача параметра URL с помощью команды Button на портале jsf с использованием Jsr 168 - PullRequest
0 голосов
/ 20 сентября 2010

Я не могу получить параметр от URl, когда я вызываю другой портлет с помощью командной кнопки в Jsf в JSR 168. На самом деле я вызываю метод моего manageBean из командной кнопки, где я генерирую URL, и вызываю другой портлет. Но я не могу получить этот параметр в другом управляющем компоненте вызываемого портлета.

Может кто-нибудь сказать, пожалуйста, где я ошибаюсь.

1 Ответ

1 голос
/ 30 апреля 2011

Для получения параметров URL портлета JSR 168;у вас есть один из трех вариантов (насколько я знаю):

  1. Создание фильтра на уровне сервера приложений Websphere и настройка динамического кэша для хранения строки запроса, после чего вы сможете получитьлюбой параметр, присоединенный к любой сгенерированной ссылке портлета, даже без использования сопоставления URL с учетом размера динамического кэша.

  2. Необходимо захватить параметр на ранней стадии жизненного цикла портлета, котораяназывается "doView" и, приведя RenderRequest к HttpServletRequest, вы сможете получить их из метода getQueryString () (вы не сможете захватить их из метода getParameter в RenderRequest, даже если спецификация упомянула это) и после этого вы можетеотправка на любую страницу в вашем приложении.

  3. Третий способ, если вы пытаетесь сгенерировать ссылку на портлет с помощью тегов URL Generation, вам разрешается добавить параметр к этой ссылке изахватить его в doView так же, как Below:

<wps:urlGeneration contentNode="MyApp.app"  portletWindowState="Maximized"  newWindow="True">
    <wps:urlParam name="MyParam"  value="Hi There"/> 
    <a href="<% wpsURL.write(out); %>" target="_blank" >My Link</a> 
</wps:urlGeneration>

public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { 
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    System.out.println("The parameter is:  "+httpServletRequest.getQueryString());
    super.doView(request, response);    
}

Примечание : полный код жизненного цикла вашего портлетапо умолчанию будет в пакете com.ibm.{your project name}, и RSA спросит вас, хотите ли вы, чтобы он был доступен или нет в начале создания проекта, и если вы не сделали его доступным, вы все равно можете создать его, переопределив свой <portlet-class>вашего портлета в portlet.xml.

...