Oracle Application Framework (OA Framework) – служит для разработки и кастомизации HTML страниц Oracle E-Business Suite.
OA Framework основан на стандарте J2EE и использует шаблон проектирования Model–View-Controller (MVC).
Model – отвечает за бизнесс логику, использует Oracle Business Components for Java (BC4J) : AM (Application Module), VO (View Object), EO (Entity Object)
View — отвечает за отображение информации (пользовательский интерфейс).
Controller — интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимости соответствующей реакции. Прочитать больше про контроллер.
Здравствуйте.
Не подскажете, есть табличка с результатами поиска(Region Style — table), на каждой записи есть кнопка… есть ли возможность как нибудь активировать/деактивировать эту кнопку в зависимости от данных в каком нибудь поле на этой записи, например флаг какой нибудь?
@Sand
Можно.
1) Для этого добавляется поле типа Boolean в ViewObject (на котором построена таблица), которое, в зависимоcти от значений строки, равно TRUE or FALSE.
2) В свойства нужного элемента прописываем ссылку на добавленное поле ${oa.ViewInstanceName.ViewAttributeName}
А значение поля устанавливать в VORowImpl?
@Sand
Значение устанавливаем на элемент страницы. Например OAMessageChoiseBean или OALinkBean.
Если страница кастомная, то прямо в свойствах поля. Если стандартная, то через контроллер.
Это понятно, я имел в виду
«1) Для этого добавляется поле типа Boolean в ViewObject (на котором построена таблица), которое, в зависимоcти от значений строки, равно TRUE or FALSE.»
Как установить значение поля для каждой строки?
Пытаюсь сделать в VORowImpl классе, не получается, значение устанавливается одно для всех строк
public Boolean getFlag()
{
//return (Boolean)getAttributeInternal(FLAG);
String transferred = (String)getAttributeInternal(TRANSFERRED);
System.out.println(«transferred = » + transferred);
if (transferred != null && transferred.equals(«Y»))
return new Boolean(false);
else
return new Boolean(true);
}
У меня 2 строки, в одной getAttributeInternal(TRANSFERRED) = ‘Y’ в другой — NULL, в итоге всегда получаю null
@Sand
Я бы данное условие прописал прямо в запрос VO
… case when .. then ‘TRUE’ else ‘FALSE’ end
К сожалению типы не совпадают, нельзя char привести к Boolean, возникает exception, осталось выяснить, где именно происходит инициализация строк при поиске, и там выставить значение атрибуту. Буду копать..
@Sand
Где то вы, что то не так сделали видимо. У меня все отрабатывает хорошо.
Тип атрибута надо указать Boolean.
Победил, все оказалось гораздо проще, используется элемент — switcher, который интерпретирует любые данные, не только boolean. Я использовал String, все работает на ура
@Sand
Есть такое. Но его чаще используют, если надо показать различные типы полей.
Например, вместо поля для ввода, делаем выпадающий список.
Интересно… А не кинете исходник примерчика, с полем типа Boolean?
@Sand
Позже, я сделаю пример и выложу его на блог.
Победил и это. Я временно реализовал данный функционал через switcher item, тоже неплохо работает, более того, стандартные оракловые страницы используют такой подход для отображения картинок-ссылок(например в модуле XDO, XML Pubisher)
Теперь делаем с использованием SPEL
В VO добавляем Transient атрибут, типа Boolean, ставим галку «selected in query», пишем условие, например (case when = 5 then 1 else 0 end) testField, тип поля ставим Number и в нужном свойстве нужного поля(Rendered, например) в таблице ставим ${oa.current.testField} и все, все работает. ViewInstanceName в данном случае некорректно, так как мы работаем на уровне строки
Надеюсь кому нибудь поможет, кто начинает работать с OAF.
Приветствую. Не подскажете как сделать так, чтобы при приклеплении файла грузились только pdf файлы?