#java #oracle-adf #jdeveloper
#java #oracle-adf #jdeveloper
Вопрос:
У меня есть веб-приложения fusion в oracle adf (jdeveloper).
В котором у меня есть таблица со встроенным редактированием. В котором я хочу разрешить autocommit
, если пользователь покидает текущую строку. Поэтому, если пользователь перешел к другой строке, изменения, сделанные в предыдущей строке, должны быть сохранены автоматически.
Для этого я установил SelectionListener
свойство таблицы в:
#{DisDocT.myCustomSelectionListener}
И я написал код:
public void myCustomSelectionListener(SelectionEvent selectionEvent)
{
System.out.println("In myCustomSelectionListener");
if(isDirty()) {
cb4_action();//Commits the changes
}
MyUtils.invokeMethodExpression("#{bindings.MyView2.collectionModel.makeCurrent}", Object.class, SelectionEvent.class, selectionEvent);
}
Приведенный выше код отлично работает, если в таблице есть несколько строк для итерации. Но в случае, когда таблица имеет только одну строку или недавно созданную строку, это не работает.
Любое предложение будет оценено.(или есть какой-либо другой способ, с помощью которого встроенное редактирование может быть достигнуто в adf)
Ответ №1:
Как вы должны были заметить, с прослушивателем выбора событие запускается только при изменении выбранной строки. Итак, если вы выбираете ту же строку или, как в вашем случае, у вас есть только одна строка на данный момент, она не запускается. Вот как это должно работать.
Моим предложением было бы изменить тип события, чтобы применить изменения (выполнить операцию фиксации). Примечательным вариантом использования является работа с двойным щелчком по строкам. Ознакомьтесь с этими примерами: Обработайте двойной щелчок в таблице и запустите действие двойным щелчком. Это может быть легко реализовано и упрощает взаимодействие с пользователем (представьте, что если пользователь начнет играть со строками и постоянно их изменять, он будет каждый раз вызывать метод резервного компонента).