Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Оснащения врачебно-сестринской бригады.
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Дисциплины:
2022-10-10 | 54 |
5.00
из
|
Заказать работу |
|
|
Идея моей лабораторной работы проста. Мы берем и пользуемся готовым веб-сервисом. Т.е. мы его используем и пишем для него клиент. Ну а т.к. веб-сервис в сети, то мы по сути работаем с реальным веб-сервисом.
В чем заключается идея лабораторной работы? Из чего она состоит? И что вы там увидите? Предполагается, что на экране есть список клиентов или сотрудников. Вы можете выбрать любого в списке и отредактировать его, вы можете нажать кнопочку «Добавить», после чего добавляется пустая формочка и вы добавляете нового сотрудника. Вы можете добавить сотрудника, можете отредактировать, можете удалить его. Соответственно, у вас есть несколько страничек между которыми происходит переключение. Несколько кнопочек уже реализовано, но какие-то кнопочки обработчики событий не сделаны. Поэтому в лабораторной работе вы что должны будете сделать? Чтобы первая стартовая страница отображала список сотрудников, т.е. надо будет сделать отображение данных. Потом какую-то одну формочку реализовать, сделать на нее обработку событий. И в целом когда вы потихонечку шаг за шагом, то что написано в лабе, когда вы дойдете до окончания, то в принципе программа будет работать. Там есть пара моментов, которые не отрабатывают. Если захотите, то можем это обсудить, как это надо исправлять. И есть один вопрос, который в лабе задается. Кнопочка «Cancel» - у нас, когда формочку пользователь для пользователя начинает заполнять, там есть кнопочка «Добавить» и Кнопочка «Cancel». Так вот кнопочка «Cancel» работать не будет. Вы начинаете заполнять, нажимаете «Cancel», вам говорят «не все поля заполнены». И надо будет подумать, а как вообще сделать, чтобы «Cancel»заработал и понять почему это не работает. Это вопрос важный.
|
Работа с данными в JSF. - Откройте проект WebApplication2 в каталоге Лабы Java2/JSF/Lab1. - Запустите его, обратите внимание, что на стартовой странице «clientList.xhtml» нет отображения данных, а так же отсутствуют обработчики на кнопки Add/Cancel и Save/Cancel. - Откройте форму clientList.xhtml и после открывающего тега <h:form> создайте таблицу для отображения списка Клиентов: · Добавьте открывающий и закрывающий теги для генерации таблицы – h:dataTable; · В открывающем теге добавьте атрибут value=””, а в качестве значения передайте метод clienList из объекта clientlist. Тут же добавьте атрибут var=”elem”, который и будет ссылкой на текущий элемент списка; · Ниже добавьте открывающий и закрывающий теги для создания столбца – h:column; · Внутри этого тега создайте заголовок столбца таблицы и напишите выражение для доступа к данным из текущего элемента списка: <f:facet name="header">id</f:facet> #{elem.id} · Ниже создайте ещё четыре столбца для полей списка fname,lname,mail и discount соответственно. - Откройте класс Client.java и добавьте в него код для обработчиков на события: · Объявите метод «cancel», который ничего не возвращает и получает параметр ActionEvent. В теле метода завершите обработку запроса вызвав метод renderResponce(): FacesContext.getCurrentInstance().renderResponse(); · Объявите метод «addClient», который ничего не возвращает и получает параметр ActionEvent. В теле метода создайте объект класса «Client» использую конструктор с тремя параметрами. Установите параметр «discount» в соответствующее значение. Получите ссылку на объект класс «ClientList» используя следующий код: ClientList list=(ClientList) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("clientlist"); · В конце метода «addClient» проверьте, что ссылка на коллекцию была инициализирована и добавьте нового Клиента в коллекцию «list». · Объявите метод «getDiscounts», который возвращает массив «int» и не имеет входных параметров. В этом методе создайте массив состоящий из целых чисел, например 0,5,10,15 и верните его из метода. - Откройте форму newClient.xhtml и добавьте обработчики на Actionevent для кнопок «Add» и «Cancel».Найдите открывающий тег <h:selectOneMenu...> и после него добавьте тег <f:selectItems />. В этом теге создайте атрибут «value=””» и в качестве значения установите ему метод «discounts» из объекта «client». - Откройте форму editClient.xhtml и добавьте обработчики на Actionevent для кнопок «Save» и «Cancel».Найдите открывающий тег <h:selectOneMenu...> и после него добавьте тег <f:selectItems />. В этом теге создайте атрибут «value=””» и в качестве значения установите ему метод «discounts» из объекта «client». - Запустите приложение. Нажмите кнопку «New», а затем сразу отмену «Cancel». Почему отмена не работает? - Исправьте код. - Что ещё нуждается в улучшении? Ваши предложения..... |
|
- Запустите приложение. Нажмите кнопку «New», а затем сразу отмену «Cancel». Почему отмена не работает?
- Исправьте код.
- Что ещё нуждается в улучшении? Ваши предложения.....
Разбираем лабораторную работу:
Почему не работал «Cancel»?
Вот ответ на этом слайде:
Давайте еще раз. Значит, что у нас происходит? Приходит запрос, получили View, получили для дерева объектов данные, их начали обрабатывать. Validationпошел. Но в Validationвыясняется, что полей-то нету. На этапе валидации у нас происходит событие, где срабатывают все проверки. Всё. Вы вылетели и страничку отправили клиенту и говорят: «введи поля». А «Cancel»где работает? Вот где он работает! Все события, которые мы разбирали на последних слайдах перед лабой, они происходят на этапе «вызов событий». И соответственно, получается, что до события «Cancel»Это дело даже не доходит. Вот для того, чтобы это решить вот такую проблемную ситуацию легко и красиво они придумали волшебное слово «пожалуйста, сделай обработку моих событий пораньше». – вот это слово должно быть:
Далее…
И если посмотреть повнимательнее, то вы могли столкнуться с аномальными эффектами, с т.з. сбоя данных в программе, а именно:
1. Если я запущу программу, то у меня выводится список. Я выбираю, например, третий. Сначало данных не было при первом запуске.
А теперь данные есть.
А почему так? Все эти накладочки мы обсуждали. Я даже показывал код, как эти проблемы решить. Но здесь важно понять одно, если вы захотите, то разберетесь с этой проблемой. Но все начинается из-за чего? Мы сейчас обращаемся к какому объекту? У нас ClientList. И там где-то и создается объект ClientList, правильно? Причем там стоит параметр «создай его как можно раньше, прежде чем эта формочка появится и начнет рендериться». Это удобно. НО! Но когда вы печатаете номер и нажимаете «Edit», то открывается другая страница и создается объект «Client». Понимаете? Он создается налету. И в общем получается так, что когда вы здесь «3» выбираете, то данные некуда класть. Я не помню, как там в программе сделано. То ли там новый объект создается. Как-то получается, что когда мы переключаемся со страницы clientListв первый раз, вот в первый раз в этот момент и создается объект Clientи мы начинаем с ним уже работать. А если вы Updateнажмете, то она создаст этот объект.
|
Идем дельше…
У нас после первой лабораторной еще есть соответственно пару картинок, где нам предлагают задуматься, что можно еще улучшить. Вот что можно еще улучшить.
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!