Главная > OA Framework > OAF-компоненты. AdvancedTable


OAF-компоненты. AdvancedTable

1. Использование элементов ввода в области tableActions

Для элементов области tableActions, в которые предполагается ввод данных пользователем (например, MessageChoice или MessageTextInput), была замечена особенность: если ViewObject, связанный c AdvancedTable, не инициализирован, тогда нет доступа к новым значениям элементов, введенных на форме. Признаком того, что ViewObject не инициализирован, является надпись в табличной части «Поиск не выполнен». Если ViewObject инициализирован, но в нем нет строк, то надпись будет «Нет результатов поиска». В контроллере этот факт можно проверить с помощью функции VO isPreparedForExecution. Для кнопок таких проблем не возникает — с точки зрения обработки, важен только сам факт нажатия кнопки, который всегда можно отследить и обработать в контроллере.

Если есть необходимость работать с элементами, допускающими ввод данных пользователем в tableActions, то нужно чтобы VO был в инициализированном состоянии. Например, в контроллере processRequest, можно написать следующий код (чтобы состояние «VO НЕ инициализирован, строк нет» перевести в состояние «VO инициализирован, строк нет»)

if (!vo.isPreparedForExecution()) {
    vo.setWhereClause("1=0");
    vo.setWhereClauseParams(null);
    vo.executeQuery();
    vo.setWhereClause(null);
}

2. Доступ к элементам, находящимся в tableActions или tableSelection

Для доступа к элементам из областей tableActions или tableSelection, нужно сначала получить саму область, а потом искать элемент внутри нее

OAAdvancedTableBean tableBean = (OAAdvancedTableBean)webBean.findIndexedChildRecursive("invoicesTable");
OARowLayoutBean actionsBean = (OARowLayoutBean)tableBean.getTableActions(); // или OAFlowLayoutBean
OAMessageChoiceBean pt = (OAMessageChoiceBean)actionsBean.findIndexedChildRecursive("prepaymentTypesItem");
pt.setValue(pageContext, pageContext.getProfile("XXAP001_INVOICE_PREPAYMENT_DEFAULT"));

3. Связывание свойств с атрибутами VO для элементов внутри Столбца

Для некоторых элементов, являющихся дочерними по отношению к столбцу AdvancedTable, не удалось связать свойства с атрибутами VO. Такая особенность наблюдалась для любого региона (flowLayout, tableLayout и т.п.) и для компонента spacer. Например, свойство Rendered не получилось связать ни с использованием EL, ни через OADataBoundValueViewObject. Для spacer-а можно применить workaround:

  • вместо компонента spacer использовать компонент rawText
  • в свойстве Text указать HTML-код, который генерится компонентом spacer (задать нужные значения в атрибутах width и height): <img src="/OA_HTML/cabo/images/skyros/t.gif" width="10" height="10">
  • свойство Rendered связать с атрибутом VO

Похожие записи:

Categories: OA Framework Tags: ,
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.