调用多个valuechangelistener jsf-1.2 richfaces

时间:2015-08-11 07:51:09

标签: richfaces jsf-1.2

是否可以在h:selectBooleanCheckbox中调用多个valueChangeListener 我正试图将一个值传递给两个Beans。

豆子彼此不认识。注射不是一种选择。

1 个答案:

答案 0 :(得分:0)

我在这里找到了一个可能性: http://www.java-samples.com/showtutorial.php?tutorialid=606 和这里 http://www.pretechsol.com/2013/04/jsf-value-change-listener-example.html#.VcnZbPntlBc

在某些情况下,您可能希望多个值更改侦听器或多个操作侦听器响应事件。在这种情况下,您需要稍微不同的语法来将侦听器附加到JSF元素。 使用动作侦听器时,值会附加到更改侦听器或动作侦听器 JSF元素通过使用valueChangeListener或actionListener属性。使用属性语法时,可以使用方法绑定表达式将方法绑定为侦听器。但是,这仅在附加单个侦听器时才有效。

当您需要附加多个侦听器时,有一个用于值更改侦听器的JSF标记和一个用于将一个或多个侦听器附加到元素的动作侦听器。使用标记语法时,您将指定一个实现侦听器接口的类。对于值更改侦听器,标记是,具有名为type的属性,该属性是侦听器的类名。侦听器必须实现的接口是javax.faces.event.ValueChangeListener。它有一个必须实现的方法:

void processValueChangeEvent(ValueChangeEvent);

因此,如果我们假设FlightSearch和FlightTypes类都实现了ValueChangeListener,我们可以将它们都附加到这样的元素:

<h:selectOneRadio layout="lineDirection" value="#{flight.tripType}" onclick="submit()" immediate="true"> 
   <f:valueChangeListener type="com.apress.projsp.FlightSearch"/> 
   <f:valueChangeListener type="com.apress.projsp.FlightTypes"/> 
   <f:selectItems value="#{types.tripTypes}"/> 
</h:selectOneRadio>