2011-03-09 88 views
0

我在我的JSF頁面上使用了一個SelectOneMenu組件和一個SelectBooleanCheckbox組件。SelectOneMenu僅在更新後更改其值

如果選擇了組合框,我的SelectOneMenu應該被阻塞並被設置爲第一個元素(復位)。

現在我已經實現了組合框的值更改偵聽器,並且阻止SelectOneMenu工作得很好。

但是,當我重置組合框時,SelectOneMenu被設置爲舊(前一個)元素。

我認爲這有點像JSF使用的緩存。

如何重置SelectOneMenu控件?

我已將value-屬性鏈接到bean屬性。我在值更改偵聽器中爲此屬性設置了一個值。

謝謝!

+0

JSF 1.x or 2.x? – BalusC 2011-03-09 14:59:01

+0

@BalusC JSF 1.x和會話範圍的bean。 – leshkin 2011-03-09 15:01:58

回答

1

我假設您在複選框上使用immediate="true",並且您正在使用值更改偵聽器方法調用FacesContext#renderResponse()(否則您會因驗證而發瘋)。

在這種情況下,您還需要將下拉組件本身的值設置爲null

UIInput dropdown = (UIInput) facesContext.getViewRoot().findComponent("formid:dropdownid"); 
dropdown.setValue(null); 

UIViewroot#findComponent()的替代方法是將其綁定爲bean屬性。

<h:selectOneMenu binding="#{bean.dropdown}"> 
+0

非常感謝! – leshkin 2011-03-10 08:47:32