2013-05-18 49 views
0

我想將參數從jsf頁面傳輸到另一個jsf頁面。就像這樣:如何將參數從managedbean傳輸到jsf頁面

a.xhtml

<h:form> 
    <h:commandLink class="navi" value="press" 
       action="#{Bean.action}"> 
     <f:param name="id" value="5555" /> 
    </h:commandLink> 
</h:form> 

Bean.java

public String action() { 
    HttpServletRequest request = (HttpServletRequest) FacesContext 
      .getCurrentInstance().getExternalContext().getRequest(); 
    String param = request.getParameter("id"); 
    return "b?id=" + param; 
} 

b.xhtml

<h:inputText value=#{param.id} /> 

由以前的方式,我從a.xhtml轉移帳號設定爲B .xhtml,但我不想公開像「... b.xhtml?id = 5555」這樣的參數:

return "b?id=" + param; 

ManagedBean的範圍是請求。我該如何解決這個問題?謝謝。

+0

使用EL嵌入式'flash'對象。 – skuntsel

回答

0

你可以也請嘗試viewParam

<f:metadata> 
    <f:viewParam name="id" value="#{bean.id}" /> 
</f:metadata> 

它確實基本上如下:

  • 按名稱獲取ID的請求參數值。
  • 必要時轉換並驗證它(您可以使用必需的,驗證器和轉換器屬性,並嵌套並像上一樣)
  • 如果轉換和驗證成功,則將其設置爲由#{bean .id}

您可以在結果鏈接上傳遞id(例如b.xhtml?id = 1),並在任何Managed Bean上檢索它。

-1

如果您的bean是會話作用域,這很容易。

Bean.java

private String param; 

public String action() { 
    HttpServletRequest request = (HttpServletRequest) FacesContext 
      .getCurrentInstance().getExternalContext().getRequest(); 
    param = request.getParameter("id"); 
    return "b?id=" + param; 
} 

public String getParam() { 
    return param; 
} 

XHTML

<h:inputText value=#{bean.param} /> 
0

如果使用JSF 2或EL 2.2,你可以把它作爲一個參數傳遞給方法

<h:commandLink class="navi" value="press" action="#{Bean.action(5555)}" /> 
相關問題