簡體   English   中英

JSF AJAX URL參數更新

[英]JSF AJAX URL Param update

我有一個場景,其中的頁面可以顯示數據表。 數據表數據是由用戶選擇的,但必須有可能提供直接URL,以將特定數據加載到表中。 為此,我在URI中使用參數來確定應加載的服務(www.example.com?service=1)。

用戶單擊一項服務,URL更改為www.example.com?service=2,該服務的數據通過AJAX加載並顯示在頁面上。 沒有回發,只有部分頁面刷新。 我想避免完整的頁面重新加載,因為只有數據表需要重新加載。

  1. 我如何在不重新加載頁面的情況下從備用Bean更新URL參數(即,從www.example.com?service=1到www.example.com?service=2)?
  2. 如何在不重新提交頁面的情況下閱讀新的URL參數?

更新

目前,我正在重定向整個頁面

FacesContext.getCurrentInstance().getExternalContext().redirect(url); 

並嘗試使用

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("service"); 

但是,這真的不是我想要實現的,因為它需要重新加載許多不必要的數據,這會使頁面上其他屬性的管理變得更加復雜! 我想更新參數並讀取它們,但只能重新加載數據表。

我是JSf的新手,但我認為這會有所幫助,這是一個簡單的示例:

假設您有一個<h:inputText> ,其對象屬性為值,例如:

<h:form id="formUser">
    <h:inputText value="#{userBean.name}" id="userName" />
</h:form>

如果您需要使用ajax調用來更新name屬性:

<h:commandButton value="Update user" action="#{userBean.updateUserName}">
    <f:ajax render="formUser:userName" execute="formUser:userName" />
</h:commandButton>

render屬性將使元素重新加載到頁面上。 在這種情況下,execute將使元素將值設置為UserBeanname屬性。

這樣,當您在該inputText上鍵入名稱並單擊commandButton ,它將執行name的set方法並在視圖上重新呈現輸入,以便出現新值。

但是,如果你需要一個link這里是從例子在這里

<h:link value="Login page + Param " outcome="login" >
    <f:param name="username" value="mkyong" />
</h:link>

那是你真正想要的嗎?

暫無
暫無

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

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