JSF: перенаправление на url как POST, а не как GET
У меня есть страница JSF, которая перенаправляет через context.getExternalContext().redirect(url);
, где url-адрес sth. например, логин.в JSF?токен=foobar
Теперь я хочу отправить токен по почте, а не по запросу GET. Так что он не отображается в url, возможно ли это с помощью JSF?
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>