簡體   English   中英

如何將參數從ManagedBean傳輸到jsf頁面

[英]how to transfer parameter from managedbean to a jsf page

我想將參數從jsf頁面傳輸到另一個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} />

通過以前的方式,我將id從a.xhtml傳輸到b.xhtml,但是由於以下原因,我不想在外部公開“ ... b.xhtml?id = 5555”之類的參數:

return "b?id=" + param;

而ManagedBean的范圍是請求。 如何解決這個問題? 謝謝。

如果您使用的是JSF 2或EL 2.2,則可以將其作為參數傳遞給方法

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

您也可以嘗試viewParam

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

它基本上執行以下操作:

  • 通過名稱ID獲取請求參數值。
  • 如有必要,對其進行轉換和驗證(您可以使用必需的,驗證器和轉換器屬性,並像一樣在其中嵌套和)
  • 如果轉換和驗證成功,則將其設置為由#{bean.id}表示的bean屬性。

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

如果您的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} />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM