有人可以通過以下重定向方法告訴我如何重定向數據:FacesContext ....重定向(頁面):如何重定向數據?
FacesContext.getCurrentInstance()。getExternalContext()。redirect(「page1.xhtml」);
我有一些字符串「regNo」,我想發送。另外,請讓我知道我是如何在page1.xhtml中接收它的。
有人可以通過以下重定向方法告訴我如何重定向數據:FacesContext ....重定向(頁面):如何重定向數據?
FacesContext.getCurrentInstance()。getExternalContext()。redirect(「page1.xhtml」);
我有一些字符串「regNo」,我想發送。另外,請讓我知道我是如何在page1.xhtml中接收它的。
有幾個選項。這兩個最直接的提到這裏:
只是通過它作爲HTTP請求參數。
String regNo = "somevalue";
String url = "/page1.xhtml?regNo=" + URLEncoder.encode(regNo, "UTF-8");
ec.redirect(ec.getRequestContextPath() + url);
(該URLEncoder
是強制性的值包含非ASCII或URL特殊字符,或者如果它僅包含數字,那麼你可以跳過URL編碼的情況下)
這是在目標視圖中可通過#{param.regNo}
獲取,您可以通過@ManagedProperty
或<f:viewParam name="regNo">
通常的方式將其設置爲bean屬性。另見ViewParam vs @ManagedProperty(value = "#{param.id}")。
將它作爲閃存範圍對象傳遞。
String regNo = "somevalue";
String url = "/page1.xhtml";
ec.getFlash().put("regNo", regNo);
ec.redirect(ec.getRequestContextPath() + url);
它在目標視圖,您CNA通過@ManagedProperty
設置爲bean屬性是可通過#{flash.regNo}
。
@ManagedProperty("#{flash.regNo}")
private String regNo; // +setter
的主要功能差異是,HTTP請求參數的方法是冪等的,而閃光作用域對象的方法是非冪等的。換句話說,只有HTTP請求參數方法是可收藏的,完全相同的結果可以通過僅複製/書籤/共享URL來複制。