суббота, 5 апреля 2014 г.

27й - практикум. Список выбора значения типа "Dynamic List"

Dynamic List - один из способов построения списка выбора. Я хочу написать здесь о списке, который не будет иметь базового "Base Data Source", этот просто список выбора на форме из которого можно получить код (ИД) выбора и другие атрибуты, т.е. например когда нет задачи записать выбор в таблицу. 
Вот об этом способе построения LOV я хочу немного написать.



Вначале совсем коротко о классическом Dynamic List. Если на атрибуте View Object не настроен LOV, а список выбора нужен, то его можно настроить как раз именно здесь. Выбираем базовый VO, источник, мапируем атрибуты и список готов, внешне он будет похож на другой тип "Model Driven List".
Но я хочу иметь просто список, без базового Data Source, который сохраняет выбор в переменную. Полезным это может быть на формах выбора множества критериев не для сохранения, а например для поиска. Делается это собственно так.
Заводит переменную 
Добавляем ее bindings



Добавляем в bindings элемент "list" 

из диалога выбираем тип "Select one value list that updates a base data source"


Настраиваем как показано ниже на рисунке



Теперь на форме можно разместить компонент список выбора и настроить его на подготовленный  bindings

 <af:selectOneChoice label="Label 1" value="#{bindings.JobId.inputValue}" id="soc1" autoSubmit="true">
    <f:selectItems value="#{bindings.JobId.items}" id="si1"/>
 </af:selectOneChoice>

Теперь осталось считать, то что выбрали из списка, как правило нужен код (ИД). Вариантов несколько:
Можно через переменную
<af:outputLabel value="#{bindings.v11.attributeValue}" id="ol3" partialTriggers="soc1"/>

Через bindings списка
<af:outputLabel value="#{bindings.JobId.attributeValue}" id="ol1" partialTriggers="soc1"/>

Тут важно использовать для получения кода именно - attributeValue


А вот так можно получить и название которое видно в списке.

<af:outputLabel value="#{bindings.JobId.selectedValue eq null ? ''
        : bindings.JobId.selectedValue.attributeValues[1]}" id="ol4" partialTriggers="soc1"/>

Позицию в списке можно получить так
 <af:outputLabel value="#{bindings.JobId.inputValue}" id="ol2" partialTriggers="soc1"/>

Пример формы

 Таким образом считав выбор, его можно далее использовать в Java bean - е.









         

Комментариев нет:

Отправить комментарий