是否可以将值绑定到多个字段?

时间:2015-04-13 14:40:49

标签: jsf jsf-2

我有以下标记:

<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。我需要在每次更改时重新初始化该值。

1 个答案:

答案 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时调用的侦听器方法的名称。