我有以下标记:
<h:selectOneMenu value="#{myBean.upperBound}">
<f:selectItems value="#{myBean.getValues(filterItem)}" />
</h:selectOneMenu>
以下的managedBean:
public class MyBean{
private FilterItem lowebBound;
private FilterItem upperBound;
public List<SelectItem> getValues(FilterItem filterItem){
//Some stuff
}
//GET, SET
}
如何使用lowerBound
中现在选择的值初始化属性selectOneMenu
。我需要在每次更改时重新初始化该值。
答案 0 :(得分:1)
您需要保持selectOneMenu
和属性与AJAX调用同步。
One basic tutorial in the Oracle KB(访问2015-04-13):
f:ajax标记是一个JavaServer Faces核心标记,当与该组件一起使用时,它为任何常规UI组件提供Ajax功能。在以下示例中,通过包含f:ajax核心标记:
将Ajax行为添加到输入组件
<h:inputText value="#{bean.message}">
<f:ajax />
</h:inputText>
相关阅读:
The f:ajax listener method in h:selectOneMenu is not executed
Updating text component via selectOneMenu from inside a JSF2/Facelets subview
在您的情况下,您的组件将如下所示:
<h:selectOneMenu value="#{myBean.upperBound}">
<f:selectItems value="#{myBean.getValues(filterItem)}" />
<f:ajax listener="#{bean.listener}" />
</h:selectOneMenu>
执行操作时将调用侦听器方法;您可以更新其中的lowerBound
。
为侦听器广播javax.faces.event.AjaxBehaviorEvent时调用的侦听器方法的名称。