Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013_1 / КСТ / Разработка веб-приложений.pdf
Скачиваний:
160
Добавлен:
23.02.2015
Размер:
2.74 Mб
Скачать

</table>

</f:view>

</body>

</html>

Упражнения

1. Создайте страницу ввода с использованием палитры (кнопка «Палитра» справа вверху окна). Выберите JSF Form From Entity и отбуксируйте левой кнопкой в нужную точку формируемой страницы. Заполните поля Entity и Manage Bean Property, выбирая из списка нужные классы и свойства. Вставляемый фрагмент выглядит так:

<h:form>

<h1><h:outputText value="Create/Edit"/></h1> <h:panelGrid columns="2">

<h:outputLabel value="IdCity:" for="idCity" /> <h:inputText id="idCity" value="#{citiesView.city.idCity}"

title="IdCity" required="true" requiredMessage="The IdCity field is required."/>

<h:outputLabel value="Name:" for="name" /> <h:inputText id="name" value="#{citiesView.city.name}"

title="Name" required="true" requiredMessage="The Name field is required."/>

<h:outputLabel value="Population:" for="population" /> <h:inputText id="population"

value="#{citiesView.city.population}" title="Population" required="true" requiredMessage="The Population field is required."/>

</h:panelGrid>

</h:form>

Отредактирйте генерированный текст нужным образом. Обратите внимание на использование тега

<h:panelGrid columns="2"> . . . . . </h:panelGrid>

В чем отличие от использованных в основном тексте приемов форматирования строк? Измените атрибут columns. Что делает атрибут for?

2.Чем отличается использование в командах атрибута action со значением строки и метода экземпляра вида?

18.8.Страница редактирования записей о городах

При редактировании имеющейся записи клиенту необходимо предоставить

форму ввода реквизитов города и две командные кнопки на подтверждение записи

введенных данных и отмену записи. При отмене записи нужно вернуться к обзорной таблице,создаваемойфайломcitiesPage.xhtml. Приподтверждениисохранениявбазе данных нужно вызвать метод-обработчик citiesView.mod_yes_City, который вызовом

метода фасада edit сохранит объект как запись в базе данных.

Структура файла аналогична предыдущему. Отличие заключается в том, что поле ключа обрабатывается скрытым тегом inputHidden, что не позволяет клиенту его изменять при корректировке данных. Убирать ключевое поле из формы тоже нельзя,

228

это приведет к добавлению измененной записи в таблицу, а не к замене существующей

(проверьте!). Возвращаемая после редактирования запись должна быть полностью

комплектной, содержать все поля, включая ключевое. Это обусловлено правилами формирования нового экземпляра объекта на основе данных формы, принятые в тех-

нологии JSF. Если вы не желаете использовать скрытые поля, то потребуется сохра-

нение редактируемого объекта в сессии с последующим слиянием редактированных и

сохраненных свойств объекта. Пример такого решения приведён в учебнике [2].

Файл city_mod.xhtml

<?xml version="1.0" encoding="UTF-8"?>

<!--

To change this template, choose Tools | Templates and open the template in the editor.

-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"

xmlns:h="http://java.sun.com/jsf/html"

xmlns:f="http://java.sun.com/jsf/core"

xmlns:ui="http://java.sun.com/jsf/facelets"

>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<title>Изменение атрибутов города</title> </head>

<body>

<f:view>

<table border="1" width="100%"> <tr>

<td>

<h:form>

<table>

<tr>

<td> <h:outputLabel value="Ключ:#{citiesView.city.idCity}"/> </td>

<td> <h:inputHidden value="#{citiesView.city.idCity}"/> </td>

</tr>

<tr>

<td><h:outputLabel value="Название:"/> </td> <td><h:inputText

value="#{citiesView.city.name}"/> </td> </tr>

<tr>

<td><h:outputLabel value="Население:"/></td> <td><h:inputText

value="#{citiesView.city.population}"/></td>

</tr>

<tr>

<td>

<h:commandButton

229

action="#{citiesView.mod_yes_City}" value="Заменить" />

<h:commandButton

action="citiesPage" value="Отменить" />

</td>

</tr>

</table>

</h:form>

</td>

</tr>

</table>

</f:view>

</body>

</html>

Упражнения

1.Создайтестраницуредактированиясиспользованиемпалитры(кнопка«Палитра» справа вверху окна). Выберите JSF Form From Entity и отбуксируйте левой кнопкой в нужную точку формируемой страницы. Заполните поля Entity и Manage Bean Property, выбирая из списка нужные классы и свойства. Отредактирйте сгенерированный текст нужным образом.

2.Почему требуется наличие всех полей записи на форме ввода и редактирования свойств объекта?

3.Проанализируйте работу страницы редактирования записи БД без наличия на форме ключевого поля записи. Для этого закомментируйте фрагмент тегами <!-- и -->, обращая внимание на подсказки среды.

18.9.Страница удаления записей о городах

Страница удаления мало отличается от страницы редактирования записей.

В ней все поля формы — скрытые. Обработчиком команды подтверждения удаления записи является метод citiesView.del_yes_City.

Файл city_del.xhtml

<?xml version="1.0" encoding="UTF-8"?>

<!--

To change this template, choose Tools | Templates and open the template in the editor.

-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"

xmlns:h="http://java.sun.com/jsf/html"

xmlns:f="http://java.sun.com/jsf/core"

xmlns:ui="http://java.sun.com/jsf/facelets"

>

230

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<title>Удаление записи</title> </head>

<body>

<f:view>

<table border="1" width="100%"> <tr>

<td>

<h:form>

<table>

<tr>

<td> <h:outputLabel

value="Ключ: #{citiesView.city.idCity}"/> <h:inputHidden

value="#{citiesView.city.idCity}"/>

</td>

</tr>

<tr>

<td><h:outputLabel

value="Название: #{citiesView.city.name}"/> <h:inputHidden value="#{citiesView.city.name}"/>

</td>

</tr>

<tr>

<td><h:outputLabel

value="Население: #{citiesView.city.population}"/> <h:inputHidden value="#{citiesView.city.population}"/>

</td>

</tr>

<tr>

<td>

<h:commandButton action="#{citiesView.del_yes_City}" value="Удалить" />

<h:commandButton

action="citiesPage" value="Отменить"= />

</td>

</tr>

</table>

</h:form>

</td>

</tr>

</table>

</f:view>

</body>

</html>

231

Соседние файлы в папке КСТ