Передача параметра URL с помощью команды Button на портале jsf с использованием Jsr 168

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

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

1 ответ

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

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

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

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

<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,

Другие вопросы по тегам