Как программно фиксировать через управляемый бин? - PullRequest
1 голос
/ 02 июля 2019

У меня есть управляемый компонент, который изменяет значение атрибута и вызывает всплывающее окно.Мне также нужно зафиксировать сделанные изменения (без необходимости нажимать кнопку фиксации), я попробовал некоторый код, но он ничего не делает.Помогите мне, пожалуйста.

DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
OperationBinding operationBinding = bindings.getOperationBinding("Commit");
operationBinding.execute();

1 Ответ

0 голосов
/ 03 июля 2019

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

public static ViewObjectImpl getViewObjectFromIterator(String nomIterator) {
    ViewObjectImpl returnVO = null;
    DCBindingContainer dcb = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    if (dcb != null) {
        DCIteratorBinding iter = dcb.findIteratorBinding(nomIterator);
        if (iter != null) {
            returnVO = (ViewObjectImpl)iter.getViewObject();
        }
    }
    return returnVO;
}

private void commit(String IteratorName) {
    ViewObject vo = this.getViewObjectFromIterator(IteratorName);
    try {
        vo.getApplicationModule().getTransaction().validate();
        vo.getApplicationModule().getTransaction().commit();
    } catch (ValidationException e) {
        String validationErrorMessage = e.getDetailMessage();
        //Occur when some committed data is rejected due to validation error.
        //log it : log(Level.WARNING, " " + validationErrorMessage);
    }
    catch (Exception e) {
        //Log it and warn something unexpected occured
    }


}

//In your action listener simply call the commit function as follow
//You can Find YOUR_ITERATOR_NAME the your PageDef Binding file in the Executables Column
commit("YOUR_ITERATOR_NAME");

Подробнее: https://gist.github.com/CedricL46/04570c1f078583321ad680ee8ba28f72

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...