我试图在运行时在<h:inputText>
组件中添加一些ajax行为。
我花了一天的时间来弄清楚下一个代码出了什么问题但没有成功。
在调用initUIComponent
方法之后,组件确实触发了ajax请求,还返回了正常的ajax响应。但是从不调用AjaxBehaviorListener。我错过了什么?我使用glassfish 3.1.2.2和默认的mojarra实现。
public void initUIComponent(HtmlInputText c) {
FacesContext fc = FacesContext.getCurrentInstance();
AjaxBehavior ajaxBeh = (AjaxBehavior) fc.getApplication() .createBehavior(AjaxBehavior.BEHAVIOR_ID);
ajaxBeh.setRender(Collections.singletonList("elId1"));
ajaxBeh.setExecute(Collections.singletonList("@this"));
ajaxBeh.addAjaxBehaviorListener(new AjaxBehaviorListener() {
@Override
public void processAjaxBehavior(AjaxBehaviorEvent e)
throws AbortProcessingException {
System.out.println("Something is happening!");
}
});
c.addClientBehavior("keyup", ajaxBeh);
}