Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2022-10-10 | 44 |
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!