Как отключить функцию окна клиента в jsf 2.2

Я запускаю приложение jsf2.2 и использую Primefaces с JAVA 1.6, я пытаюсь отключить функцию окна клиента, которая удаляет jfwid. Пожалуйста, предложите мне, как я могу решить эту проблему.

2 ответа

Решение

Я считаю, что функция ClientWindow по умолчанию отключена. Следующий JavaDoc детализирует поведение:

http://docs.oracle.com/javaee/7/api/javax/faces/lifecycle/ClientWindow.html

Также я не уверен, почему для ap:commandButton(h:commandButton) следует ожидать disableClientWindow, так как это запрос POST, тогда как кнопка p:button(h:button) будет запросом GET.

Посмотрев документы vld для h: commandButton, вы увидите, что там нет атрибута disableClientWindow, но есть кнопка h:.

Я пытался отключить его для всех приложений в web.xml, но безуспешно. Я попробовал следующее:

<context-param> 
      <param-name>javax.faces.lifecycle.ClientWindow.CLIENT_WINDOW_MODE_PARAM_NAME</param-name> 
      <param-value>none</param-value> 
</context-param>

Единственный способ заставить его работать, это использовать его в коде перед перенаправлением, например:

FacesContext.getCurrentInstance().getExternalContext().getClientWindow().disableClientWindowRenderMode(FacesContext.getCurrentInstance());
return "/home?faces-redirect=true";

Или используя его на собственной кнопке или ссылке:

<a jsf:disableClientWindow="true" target="_blank" jsf:outcome="go_to_anywhere?faces-redirect=true">GoToAnywhere</a>
Другие вопросы по тегам