JSF: перенаправление на url как POST, а не как GET


У меня есть страница JSF, которая перенаправляет через context.getExternalContext().redirect(url);, где url-адрес sth. например, логин.в JSF?токен=foobar

Теперь я хочу отправить токен по почте, а не по запросу GET. Так что он не отображается в url, возможно ли это с помощью JSF?

2 8

2 ответа:

Это невозможно с HTTP, так же как и с JSF. Однако существует несколько способов выполнения этого требования.

Поместите его в область действия сеанса. В бобе за перенаправленной страницей прочтите и удалите его из области сеанса. Или когда вы используете JSF 2.0, используйте область flash.

Перейти на страницу, содержащую форму сообщения, указывающую на нужный URL, имеющий маркер в качестве скрытого входного значения и включить некоторый код JS, который делает form.submit() При загрузке страницы.

Да, вы можете сделать это, перенаправив свой резервный боб на некоторую временную страницу, которая содержит все скрытые значения и использует form.submit(); Пример:

Бэк-Боб:

public String submitValue() {
        return "temp";
}

Временно.jsf

<h:form id="JsfTemp" prependId="false">
  <h:outputText id="welcomeOutput" value="Test Sending form"/>
  <h:inputHidden id="Merchant_Number" value="#{paymentBean.paymentDetails.merchantNumber}" />
</h:form>
</body>

<script type="text/javascript">
  function submitPage() {
    document.getElementById("JsfTemp").action="http://localhost:9090/TestClient/HelloWorld";
    document.getElementById("JsfTemp").submit();
  }
  submitPage();
</script>