1
我想顯示一個頁面,用戶通過使用單選按鈕進行適當選擇,可以看到文本框或組合框。這是相對容易的,我設法通過下面的代碼來做到這一點:Ajax,條件呈現和支持beans
<h:selectOneRadio id="selection" value="#{inputMethod.choice}">
<f:selectItem itemValue="#{inputMethod.TEXT}" itemLabel="textbox"/>
<f:selectItem itemValue="#{inputMethod.COMBO}" itemLabel="combobox" />
<f:ajax event="click" execute="@this" render="@form" />
</h:selectOneRadio>
<h:panelGroup id="Textbox" rendered="#{inputMethod.choice==inputMethod.TEXT}">
<h:outputLabel>Textbox:</h:outputLabel>
<h:inputText value="#{myBean.somevalue}" />
</h:panelGroup>
<h:panelGroup id="Combobox" rendered="#{inputMethod.choice==inputMethod.COMBO}">
<h:outputLabel Combobox:/>
<h:selectManyListbox id="CommunityListbox" value="#{myBean.choices}">
<f:selectItems value="#{myBean.selections}" var="u" itemValue="#{u.id}" itemLabel="#{u.name}"/>
</h:selectManyListbox>
</h:panelGroup>
我的問題是,組合框設置器永遠不會被調用。 事實上,setter僅被默認渲染的組件調用(在這種情況下,只要inputMethod.choice==inputMethod.TEXT
)。如果我刪除了條件渲染,所有的設置器都會按照預期調用。
任何想法或答案將不勝感激!
PS:我使用JSF2.0,Glassfish的3.1,Netbeans的7.0(如果這是任何意義)