Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
2022-10-10 | 41 |
5.00
из
|
Заказать работу |
|
|
У вас там одна формочка два рада в лабе. Одна формочка используется два раза. Список «Клиент» (имя, фамилия и т.д.) повторяется. А представьте к вам придут и у вас будет в 3, в 10 раз больше. Вы что? Будете менять 10 формочек? Вам нужно создать свой собственный компонент, а потом его прикрутить к тем страницам где этот список можно выводить. Вот это и есть то, что мы сейчас видим – повторное использование кода в JSF.
Что такое «компонент»? Название поля – фамилия, имя и остальные характеристики сотрудника, которые надо выводить. Но оно же состоит из двух позиций. Название и текстовое поле, где можно новое значение ввести. Что обсуждать текстовое поле? Оно текстовое поле. Это просто строчка для редактирования. А надпись? Согласитесь, что надпись в разном контексте может быть разная. Например, в одном месте будет написано «Адрес», в другом «Адрес доставки», в третьем «Адрес покупателя», в четвертом «Адрес еще кого-то». Т.е. один и тот же элемент управления сделанный вами, но в разных страницах может потребовать разных названий, а самое неприятное и разных обработчиков на события. Поэтому компонент не может на 100% сделан hardcoded, а потом его на разные страницы выкладываешь. У него должны быть параметры. И они их назвали атрибутами. И формирование своего собственного компонента для повторного использования здесь состоит из двух разделов. Первый раздел попадает в такие теги < composite: interface >. И это описание тех характеристик, которые можно будет настраивать при добавлении на страницу этого компонента. Я смогу задать много атрибутов. И это будет надпись на кнопочке «Город», на кнопочке «Value», на любой кнопочке.
И последнее самое важное – «обработчик на кнопочку». Да, будет какая-то Findкнопочка. И надпись на ней можно устанавливать какую хочешь «findButtonLabel». Мы можем здесь только задать прототип. Вот этот последний атрибут «method-signature»и говорит: «метод без параметра возвращает строку». Всё. Тогда те, кто будет подписывать уже у себя события, он будет обязан этому следовать. Вот это позволяет создать элемент управления, но со своими настройками. Если какая-то надпись не требует настройки, то на кнопке всегда будет написано «find». Ну слава Богу тогда можно часть этих атрибутов отсюда будет удалять. Это раз.
|
Идем далее…
Видите? < composite: implementation >. А в этом разделе вы уже непосредственно создаете пользовательский интерфейс, тот который в браузере увидит клиент. Ну а раз пользовательский интерфейс, то по сути мы можем взять оттуда copy-pastи сюда его забросить. Вот она формочка, всякие разные сообщения. Какие-то panelGrid. Внутри у нас всякие разные элементы и т.д. и т.д.
Но! Вот именно здесь и появятся элементы. Допустим у меня panelGridидет. Если вы посмотрите первую строчку в этом panelGrid, то это будет какой-то label. А здесь видите? Ссылочка на атрибут cityLabel. И там будет подставлен этот элемент и надпись у него может меняться, когда создается этот элемент на какой-то страничке. И так далее по остальным такая же настройка. И в конце кнопочка Action. Какой у нее обработчик? Какой пользователь задаст с помощью атрибута. Прототип метода там жестко задан. Вот это и позволит вам создать по сути элемент управления с настройками.
Сделали класс. Он будет в отдельном файле. И он будет лежать в своем собственном каталоге. И т.к. он отличается от всего остального у него свое пространство имен – вот оно «fc». Соответственно, если вы хотите его добавлять, то вы должны на эту страничку добавить пространство имен и вот там должна быть написана не только стандартная часть, но и в конце ваш каталог, где лежат эти композитные элементы управления. И потом вы пишете на этой же страничке ниже «fc: findComponent». «fc: findComponent» - это имя файла, т.е. это имя компонента в котором эта разметка находится. А дальше смотрите. Вот мы начинаем здесь использовать эти атрибуты, которые были созданы в разметке: usernameLabel –смотрим. В любом случае, вот надпись на кнопке «findButtonLabel», а вот будет обработчик на кнопку. Обратите внимание, когда вы добавляете компонент, то вы не пишете разметку. Вы используя атрибуты задаете те значения, которые должны появиться вот в этом компоненте. Вот его атрибуты, вот его реализация.
|
|
|
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!