标识触发ajax侦听器的组件



我有两个inputText组件:

<h:inputText id="inputCode">
    <f:ajax event="valueChange" listener="#{mbean.inputListener}"/>
</h:inputText>
<h:inputText id="inptValue"> 
    <f:ajax event="valueChange" listener="#{mbean.inputListener}"/>
</h:inputText>

,在受管bean中:

字段:

long inputCode;
String inputText;

侦听器:

public void inputListener(AjaxBehaviorEvent abe) {
  UIInput uiinput = (UIInput)abe.getSource();
  if(the listener is triggered by the inputText with id="inputCode") {
     inputCode = (long)uiinput.getValue();
  } else {
     inputText = String.valueOf(uiinput.getValue());     
  }
}

问题是:我如何区分哪些输入文本是由侦听器触发的,以知道在哪个字段保存值?我不想为每个inputText创建一个监听器。

我可以通过组件id来做,使用component。id,但是我怎么能用这个参数调用监听器,而它有2个参数:AjaxBehaviorEvent和另一个将是组件id?

该id在uiinput上已经存在。您可以通过查看UIInput的api看到这一点,因此您需要做的就是决定是否需要使用id或clientId。后者以父命名容器的所有id作为前缀。

public void inputListener(AjaxBehaviorEvent abe) {
  UIInput uiinput = (UIInput)abe.getSource();
  if(uiinput.getId().equals("inputCode")) {
     inputCode = (long)uiinput.getValue();
  } else {
     inputText = String.valueOf(uiinput.getValue());     
  }
}

相关内容

  • 没有找到相关文章

最新更新