2014-02-12 48 views
1

我用的是大omnifaces 1.7解決方法FixViewState爲了解決以下問題:視圖狀態和ViewScope迷路上阿賈克斯render =「@ form」。 解決方法似乎與f:ajax,但不與a4j:ajax(richfaces)正常工作。我可以使用FixViewState.js從omnifaces與RichFaces的A4J:AJAX(RF4 + JSF2.2 /鑽嘴魚科)

該修補程序是否應該使用richfaces開箱即用? (RichFaces的版本是4.3.5)

也許通過A4J記錄相關的問題:登錄:

error[15:09:31.667]: [status=200] During update: javax.faces.ViewState not found 

謝謝!

+0

這是一個JSF-2.2環境嗎? – mabi

+0

是的 - 我使用mojarra 2.2.5 –

+0

我注意到與a4j記錄(可能)相關的問題:日誌 - >錯誤[15:09:31.667]:[狀態= 200]在更新期間:javax.faces.ViewState找不到< <我相應地更新了我的問題 –

回答

5

鉈; DNR:

與評論,並從個人經驗方面的信息:這是一個已知的bug與RichFaces的RichFaces的-4.x版與JSF-2.2

龍版破-4.x連同Mojarra-2.2.x。有關詳細信息,請參見RF-13317。要求JSF-2.2更改爲ViewState隱藏輸入字段的規範,並且RichFaces沒有跟上(它的目標是JSF-2.1,所以很好)。它仍然呈現一個JSF-2.1 viewstate id,它混淆了包含在Mojarra-2.2.x中的Javascript,它現在試圖找到具有JSF-2.1 viewstate id但沒有找到的元素。這使得RichFaces名義上每個阿賈克斯調用失敗,雖然在一個非破壞性的方式。

就個人而言,我使用了一個比較難看的技巧,使上述通:

<o:onloadScript> 
    jQuery('#viewStateContainer').html('<span id="javax.faces.ViewState"></span>'); 
</o:onloadScript> 
<span id="viewStateContainer" style="display:none;"></span> 

這提供RichFaces的用假元素把視圖狀態到(破壞它的過程中,所以它需要被重新由onloadScript創建)。

這似乎解決了我的問題,但相當混亂。因此,請隨時對此發表評論/詢問。

+0

非常有幫助的答案!我保持關注...關於 –

+0

我應用了你的把戲,它似乎解決了這個問題......我必須把它放在哪裏?內部形式? thx –

+0

@SteveOh我已經把它放到我的主模板中(所有其他頁面繼承的模板)。由於它是純javascript,因此它應該可以在任何地方使用。 – mabi

2

對不起,我沒有足夠的聲望對選定的答案發表評論,但這似乎從Richfaces 4.5.0開始已經修復(請參閱backporting issue)。

相關問題