2012-06-13 112 views
1

我有一個場景,我有一個能夠顯示數據表的頁面。數據表數據由用戶選擇,但必須可以提供一個直接的URL來將特定的數據加載到表中。爲了實現這一點,我在URI中使用params來確定應該加載的服務(www.example.com?service=1)。JSF AJAX URL參數更新

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

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

UPDATE

在我與

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

重定向整個頁面,並試圖在參數讀取時刻

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

但是這確實是沒有什麼我想實現它重新加載了大量不必要的數據,並且使得管理頁面上的其他屬性更加複雜!我想更新參數並讀取它們,但只能重新加載數據表。

+0

@Daniel Ive更新了帖子。 – tarka

回答

0

我是新來的JSF,但我認爲這將幫助,這是一個簡單的例子:

讓我們假設你有一個<h:inputText>與對象屬性的值,如:

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

如果您需要使用ajax調用更新名稱屬性:

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

render屬性將使元素在頁面上重新加載。的執行將使元素設置的值,在這種情況下,到UserBean

這樣,name屬性,當你鍵入的是inputText一個名稱,然後單擊commandButton,它將執行一套方法的名稱,並重新 - 在視圖上輸入輸入,以便顯示新值。

但是如果你需要一個在這裏是linkhere一個例子:

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

那是你真正想要的?

+0

謝謝丹尼爾,那不是我想要的。一般來說,使用ajax執行頁面的部分重新加載沒有問題。我的問題是執行一個AJAX URL參數更新,然後讀取一個AJAX URL參數。所以我想通過ajax將網址從www.example.com?service=1更改爲www.example.com?service=2,無需重新加載頁面。 – tarka