2008-11-18 68 views
1

好的,我的問題:我有一個JSF應用程序和一些JSP文件。假設我有main.jsp,它有一個視圖幷包含sub.jsp。這工作正常。 sub.jsp包含一個子視圖。因此,sub.jsp中的表單元素的所有ID都遵循'subview:component'的形式。現在假設我使用了一些ajax,並且想要獲取jsp頁面sub.jsp並將其包含在某個DIV中。現在ID全部是「組件」形式。我不知道解決此問題的方法,並且在我的交互式JavaScript中檢查2個不同的ID集合是一種痛苦。有什麼方法可以獲得一致的ID嗎?在JSF中加載ajax負載

我已經試過: 刪除子視圖 - (當時因爲沒有視圖發現AJAX調用會失敗)

H:形式prependid =假的 - 這不僅能消除表單ID,不是子視圖ID

回答

2

對於JSF來說,AJAX很棘手。如果您使用的JSF框架不支持它,則會遇到許多視圖狀態問題。

我很驚訝,當你解決sub.jsp一個異常沒有拋出直接 - 不應該有H:鑑於sub.jsp並沒有UIViewRoot,我不知道如何UI樹會被創建。如果您在sub.jsp中有h:視圖,那麼您將兩個UIViewRoots放入您的UI樹 - 這是一個錯誤。 (JSF組件樹大致類似於其他Java小部件工具包(如Swing或SWT)。)

我懷疑你正在觀察的問題是你正在向不同的視圖提交原始呈現的視圖。由於組件樹完全不同,因此clientIds將從不同的視圖根目錄生成。您可以閱讀關於它們在this answer中的構建方式。

總之,我不認爲你用來更新客戶端的機制是有效的。

0

你看過ajax4Jsf(aka Richfaces)嗎?