2013-11-15 95 views

回答

2

有幾個選項。這兩個最直接的提到這裏:

  1. 只是通過它作爲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}")


  2. 將它作爲閃存範圍對象傳遞。

    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來複制。