我遇到了一個對我沒有任何意義的問題。我有一個列表框,用簡單的Ajax觸發selectionChange-Events。這個想法是,編輯按鈕沒有被啓用,直到列表中的一個項目被選中。所以我創建了下面的代碼。使用ajax啓用/禁用按鈕時,不會觸發操作
<h:form>
<h:selectManyListbox value="#{bean.selectedIds}">
<f:selectItems value="#{bean.listOfItems}" />
<f:ajax render="edit"
listener="#{bean.selectionChanged}" />
</h:selectManyListbox>
<br />
<h:commandButton id="add" value="#{msgs.add}"
action="#{bean.addNew}" />
<h:commandButton id="edit" value="#{msgs.edit}"
disabled="#{bean.editButtonDisabled}"
action="#{bean.edit}" />
</h:form>
按鈕啓用,當我想禁止,但事實證明,編輯鍵觸發的心不是任何行動(我加了一些系統輸出在bean和編輯 - 添加 - 中和編輯方法方法永遠不會被調用)...而是改變html。上面的代碼嵌套在一個簡單的div中。當我點擊編輯時,整個表單就在該div之外。
當我將這個ajax行爲添加到添加按鈕時,發生同樣的情況,反之亦然,當我從編輯按鈕中刪除禁用的屬性一切正常?
我已經看過BalusC的回答here但我找不到與該列表有關的任何錯誤。沒有嵌套的表單等......它只是一個帶模板的簡單頁面。
我在JBoss 7.1.Final上使用Mojarra 2.1.2。
任何幫助表示讚賞。由於
你不需要重新渲染整個窗體,因爲commandButton動作將被附加到HTML表單元素? – 2012-02-22 11:04:50
我試過了,但沒有幫助。此外,爲什麼我需要渲染表單?我預計由此創建的JavaScript只會改變DOM樹中的按鈕。 – lostiniceland 2012-02-22 12:19:19
這只是一個猜測。我不太確定如何實現禁用/啓用。您是否嘗試了與渲染相同的操作,例如有兩個按鈕有條件呈現? – 2012-02-22 12:31:56