我有一個使用Primefaces 5.3的JSF前端,它使用Ajax動態更新字段。我遇到的問題是,有時我的Ajax調用失敗(例如:服務器響應500),但我的前端仍在改變。從本質上講,如果我的ajax失敗,我期望防止輸入字段的更改。換句話說,我只希望輸入字段在成功的Ajax響應時發生變化。如何僅在Ajax成功時更新JSF/Primefaces組件值,但在Ajax失敗時不做任何事
我對JSF相當陌生,所以我不知道如何處理這個問題。在常規的HTML/JS中,我將能夠存儲onclick的值,並在我的ajax錯誤處理程序中恢復了該值,但我不知道如何使用PF框架來執行此操作。
<div class="Container25">
<p:selectOneRadio id="grid" value="#{cc.attrs.answer.singleAnswer.codeValue}" layout="grid" columns="1" >
<f:selectItems value="#{cc.attrs.menuItems}"
var="item" itemLabel="#{msg[item.code]}" itemValue="#{item.code}" itemLabelEscaped="false"/>
<p:ajax event="change" listener="#{cc.attrs.onChange}" update="#{cc.attrs.update}" disabled="#{cc.attrs.onChange == null }" global="false" />
</p:selectOneRadio>
</div>
我試着給ajax組件添加resetValues屬性,但是這沒有幫助。另外,我試過在我的onstart
處理程序中添加一些自定義JS,但它是未定義的。
我覺得必須有一個簡單的JSF/PF方法來做到這一點,但似乎無法找到它。
如何防止輸入值改變,直到Ajax調用成功返回(即:只更改onsuccess處理程序中的值),或在我的Ajax調用失敗的情況下重置原始單選按鈕選擇?我需要在我的onerror
處理程序中恢復預先ajax狀態?
也許這一個幫助:http://stackoverflow.com/questions/28538133/general-handling-of-ajax-call-error-on-client-side –
我與防止啓動500錯誤或在錯誤頁面中報告發生了什麼。只要恢復這些值並保持在同一頁面上就是無用的,因爲放入相同的值會再次失敗。 – Kukeltje
@kukeltje。同意,但目前這不是問題。我確實需要處理這種情況,但我還需要確保前端處於已知或穩定狀態。基本上,值的變化取決於成功的Ajax調用。所以如果Ajax沒有返回200,我不希望我的價值改變。 –