我有2个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是被触发的侦听器,以便知道在哪个字段中保存值? 我不想为每个inputText创建一个监听器。
我可以使用component.id通过组件id来完成它,但是如果它有2个参数,我怎么能用该参数调用监听器:AjaxBehaviorEvent和另一个是组件id?
答案 0 :(得分:0)
uiinput
上已经存在该ID。通过查看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());
}
}
应该做到这一点。