gpt4 book ai didi

java - 迁移到 RichFaces 4 : HtmlAjaxCommandLink -> UICommandButton

转载 作者:行者123 更新时间:2023-11-29 03:37:02 25 4
gpt4 key购买 nike

我将遗留项目转换为更现代的库版本。旧版本使用以下 ajax4jsf 代码:

HtmlAjaxCommandLink link = new HtmlAjaxCommandLink()
link.addAjaxListener(new AjaxListener() {
@Override
public void processAjax(AjaxEvent event) { }
});

根据文档,HtmlAjaxCommandLink 在 Richfaces 4 中被 UICommandLink 取代。

不过,我似乎无法为控件找到 addAjaxListener 的替代品。

可以用什么代替?

最佳答案

从 JSF2 开始,ajax 已被 JSF API 标准化。所有支持客户端行为的组件都应该实现 ClientBehaviorHolder反过来提供 addClientBehavior()添加客户端行为的方法。 ajax 的具体客户端行为实现是 AjaxBehavior反过来提供 addAjaxBehaviorListener()这正是您正在寻找的方法。

综上所述,在您的特定情况下,可以按如下方式替换:

UICommandLink link = new UICommandLink(); // Note: you can also just use standard JSF HtmlCommandLink.
link.setId("linkId"); // Fixed ID is mandatory for successful processing.
link.setValue("click here"); // Not sure if you need it. Just to be complete.
AjaxBehavior ajaxAction = new AjaxBehavior();
ajaxAction.addAjaxBehaviorListener(new AjaxBehaviorListener() {
@Override
public void processAjaxBehavior(AjaxBehaviorEvent event) throws AbortProcessingException {
System.out.println("Ajax behavior listener invoked."); // Do your actual job jere.
}
});
link.addClientBehavior("action", ajaxAction); // Note: don't use "click" event!

关于java - 迁移到 RichFaces 4 : HtmlAjaxCommandLink -> UICommandButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14965629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com