Как отключить функцию окна клиента в 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>