Как выполнить операцию обновления виджета из класса, реализующего интерфейс CockpitAction ‹I, O›

Добрый день.

Есть ли какое-либо решение для вызова операции обновления виджета в классе, реализующем интерфейс CockpitAction. Вообще говоря, вы должны реализовать этот интерфейс, чтобы использовать собственное действие в бэк-офисе. В моем случае это кнопки на странице подписки:  введите описание изображения здесь

На картинке вы видите 4 разные кнопки, это не стандартная функциональность бэк-офиса, поэтому вы должны реализовать ее самостоятельно. 4 кнопки = 4 действия. Когда вы нажимаете кнопку, есть способ:

ActionResult выполнить (ActionContext var1);

Которая вызывается для выполнения необходимой логики.

И есть способ:

логическое значение по умолчанию canPerform (ActionContext ctx) {return true; }

Что используется для проверки того, находится ли эта кнопка в активном или пассивном состоянии, например, кликабельна она или нет.

Проблема в том, что когда вы нажимаете кнопку, и она должна стать неактивной, она все еще активна, поскольку обновление не запускается, вы можете запустить обновление вручную, нажав кнопку обновления. В идеале обновление должно запускаться после нажатия кнопки действия в методе perfrom (): < img src = "https://i.stack.imgur.com/C6heN.png" alt = "введите описание изображения здесь">

Я поискал и не нашел способа вызвать операцию обновления из кода класса, реализующего интерфейс CockpitAction. Логика построения бэк-офиса очень сложна и плохо документирована, поэтому я даже не нашел нужной функции для запуска обновления.

Если вы работали с SAP Hybris и хорошо знаете Backoffice, не могли бы вы помочь разобраться в этом.

Заранее спасибо!


person Maksim    schedule 26.07.2019    source источник


Ответы (1)


В методе выполнения просто установите 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;
}
person Sali Manaf    schedule 29.07.2019