【问题标题】:Is it possible to bind a value to more than one field?是否可以将一个值绑定到多个字段?
【发布时间】:2015-06-18 22:19:23
【问题描述】:

我有以下标记:

<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
}

我现在如何使用在selectOneMenu 中选择的值来初始化属性lowerBound。每次更改时,我都需要重新初始化该值。

【问题讨论】:

标签: jsf jsf-2


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多