如何对实现 CockpitAction<I, O> 接口的 class 的小部件执行刷新操作

How to perform refresh operation on widget from class that implements CockpitAction<I, O> interface

美好的一天。

在class实现了CockpitAction接口的widget上调用刷新操作有什么解决方案吗?一般来说,你应该实现这个接口才能在后台使用你自己的动作。所以在我的例子中,它是订阅页面中的按钮:

在图片上你可以看到4个不同的按钮,这不是backoffice开箱即用的功能,所以你应该自己实现。 4 个按钮 = 4 个动作。当你按下按钮时,有一个方法:

ActionResult perform(ActionContext var1);

调用它来执行所需的逻辑。

还有方法:

default boolean canPerform(ActionContext ctx) { return true; }

用来检测这个按钮是主动状态还是被动状态,比如是否可以点击

问题是,当你按下按钮时,它应该变为非活动状态,但它仍然是活动状态,因为没有触发刷新,你可以通过点击刷新按钮手动触发刷新。理想情况下,应该在 perfrom() 方法 中按下操作按钮后触发刷新:

我搜索了一下class实现CockpitAction接口的代码,没有找到触发刷新操作的方法。 backoffice 的构建逻辑非常复杂,而且没有很好的文档记录,所以我什至没有找到合适的触发刷新的函数。

如果您使用过 SAP Hybris 并且对 Backoffice 很了解,请您帮忙解决这个问题。

提前致谢!

在刚刚设置的perform方法中 result.setStatusFlags(EnumSet.of(StatusFlag.OBJECT_MODIFIED));

public ActionResult<T> perform(final ActionContext<T> obj)
{
-------- some logic --------
    final ActionResult result = new ActionResult(ActionResult.SUCCESS);
    result.setStatusFlags(EnumSet.of(StatusFlag.OBJECT_MODIFIED));
    return result;
}