В этом проекте откройте мастер создания декларативного компонента JSF:
Новый декларативный компонент smartLovDef должен иметь как минимум три атрибута: некоторую строку для метки, привязку атрибута для входного текста и привязку LOV для списка значений комбинированного списка:
Мастер создает файл метаданных декларативного comp-metadata.xml и файл smartLovDef.jspx, в который мы можем поместить содержимое нашего компонента:
Исходный код smartLovDef.jspx выглядит следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<? xml version = '1.0' encoding = 'UTF-8' ?> < jsp:directive.page contentType = "text/html;charset=UTF-8" /> < af:componentDef var = "attrs" componentVar = "component" > < af:panelLabelAndMessage label = "#{attrs.label}" id = "plam1" > < af:panelGroupLayout id = "pgl1" layout = "horizontal" > < af:inputText value = "#{attrs.attrBinding.inputValue}" required = "#{attrs.attrBinding.hints.mandatory}" columns = "#{attrs.attrBinding.hints.displayWidth}" id = "deptid" partialTriggers = "departmentNameId" autoSubmit = "true" simple = "true" /> < af:inputComboboxListOfValues id = "departmentNameId" popupTitle = "Search and Select: #{attrs.lovBinding.hints.label}" value = "#{attrs.lovBinding.inputValue}" model = "#{attrs.lovBinding.listOfValuesModel}" columns = "#{attrs.lovBinding.hints.displayWidth}" shortDesc = "#{attrs.lovBinding.hints.tooltip}" partialTriggers = "deptid" simple = "true" > </ af:inputComboboxListOfValues > </ af:panelGroupLayout > </ af:panelLabelAndMessage > < af:xmlContent > < display-name >smartLovDef</ display-name > < attribute > < attribute-name >label</ attribute-name > < attribute-class >java.lang.String</ attribute-class > < required >true</ required > </ attribute > < attribute > < attribute-name >attrBinding</ attribute-name > < attribute-class >java.lang.Object</ attribute-class > < required >true</ required > </ attribute > < attribute > < attribute-name >lovBinding</ attribute-name > < attribute-class >java.lang.Object</ attribute-class > < required >true</ required > </ attribute > < component-extension > < component-tag-namespace >cscomponent</ component-tag-namespace > < component-taglib-uri >/componentLib</ component-taglib-uri > </ component-extension > </ component > </ af:xmlContent > </ af:componentDef > </ jsp:root > |
Следующим шагом является развертывание компонента в библиотеке ADF. Мы должны добавить новый профиль развертывания для проекта CSComponents:
И давайте развернем проект в библиотеке:
Следующим шагом является определение подключения файловой системы в палитре ресурсов к пути развертывания проекта CSComponents:
После этого нам нужно выбрать проект, в котором мы собираемся использовать новый компонент (в моем случае ViewConroller) и добавить к нему библиотеку CSComponents.jar:
Теперь мы можем использовать компонент smartLovDef на нашей странице и перетащить его из палитры компонентов:
На нашей странице jspx исходный код будет выглядеть так:
1
2
3
4
|
<cscompLib:smartLovDef label= "#{bindings.DepartmentId.label}" attrBinding= "#{bindings.DepartmentId}" lovBinding= "#{bindings.DepartmentName}" id= "sld1" /> |
Ссылка: пример декларативного компонента ADF от нашего партнера JCG