Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование Тэгов и JavaBeansСодержание книги Поиск на нашем сайте
Тэг "hello world" не очень мощный. Определенно, он не сэкономит чьих-то усилий. В этом случае, конечно же, было бы гораздо проще напечатать слова "Hello World" самостоятельно. Давайте посмотрим на пример, который немного более продвинутый с точки зрения программирования и, в то же время, иллюстрирует, как тэги могут создавать объекты, доступные для JSP страницы. В этот раз мы намереваемся создать приветственный тэг, который немного более полезен, чем "hello world", и поэтому немного более общий. Представьте тэг приветствия, который при использовании будет создавать объект приветствия и делать его доступным для JSP страницы. Если этот объект, JavaBean, имеет свойство, которое производит случайное приветствие, такое как "Hi there!" или "Hello", вы можете его использовать, например, так... <tijtags:greetingtag id="randomgreeting"/> <jsp:getProperty name="randomgreeting" property="greeting"/>
Во-первых, хотя это другой тэг без тела, он имеет атрибут, называемый id. Указанный выше тэг передает строку "randomgreeting" в тэг. Далее, есть JSP действие, getProperty, которое используется для запроса значения параметра "greeting" из JavaBean'а, называемого "randomgreeting". Это не случайное совпадение, что имя этого bean'а то же самое, что и значение атрибута "id", вы можете предположить, что здесь этот тэг позволяет выполнить getProperty, используя JavaBean с этим именем. Обычно вы будете ожидать увидеть JSP действие <jsp:useBean..., объявленное в верхней части JSP файла до того, как вы сможете использовать действие getProperty, чтобы получить доступ к bean'у, но в этом случае этот тэг действительно определяет bean и делает его доступным из этой страницы. Чтобы заставить такой тэг работать, нужно выполнить следующие шаги: 1. Создайте Javabean со свойством greeting и получите метод, который возвращает случайную строку приветствия, такую как "Hi there!" или "Hello". 2. Напишите класс, который реализует интерфейс Tag. 3. Дайте классу метод setId(), который позволит контейнеру установить атрибут id. 4. Создайте экземпляр JavaBean'а приветствия и сохраните его в контексте страницы. 5. Создайте TLD или файл дескриптора библиотеки тэга для тэга. В этот раз нужно сделать несколько больше вещей, но они все еще достаточно очевидны. Вы уже знаете, как писать JavaBean, но здесь есть минимальное описание того, что будет необходимо. package cx2.tags;
public class GreetingBean { String greetings[] = {"Hello!","Howdy!","Hi There!","How do you do?"}; public String getGreeting() { return greetings[(int)(Math.random()*greetings.length)]; } }
Вот сам класс тэга. package cx2.tags; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.JspException;
public class GreetingTag implements Tag { private String id; private PageContext pageContext; public GreetingTag() { } public void setId(String id) { this.id = id; } public void setPageContext(PageContext pageContext) { this.pageContext = pageContext; } public void setParent(Tag parent) { } public Tag getParent() { return null; } public int doStartTag() throws JspException { pageContext.setAttribute(id, new GreetingBean(), PageContext.PAGE_SCOPE); return Tag.SKIP_BODY; } public int doEndTag() throws JspException { return Tag.EVAL_PAGE; } public void release() { } }
Как и прежде, большая часть работы для этого тега делается в методе doStartTag(). В этот раз его следует рассмотреть немного более внимательно, а именно тот факт, что каждый из методов doStartTag() и doEndTag() могут выбрасывать JspException. Это можно проигнорировать в настоящее время, но если возникает исключение в вашей реализации тэга, будет выброшено JspException, которое может завершиться тем, что оно отобразится в клиентском окне браузера, что редко бывает нужно. Техника обработки этого будет объяснена позднее. Здесь метод doStartTag() использует метод setAttribute() объекта pageContext для создания экземпляра bean'а приветствия и хранения его в pageContext, указывая его имя и его область видимости. Имя берется их атрибута id, а область видимости - это хорошо знакомая константа PAGE_SCOPE, final параметр класса PageContext. Если это звучит запутанно, подумайте об этом как о двух частях. В класс тэга уже было передано имя через метод setId() и сохранено в переменной id. Теперь создается объект GreetingBean и добавляется в pageContext, ему передается имя, хранимое в переменной id. С точки зрения программирования это эквивалентно JSP акции: <jsp:useBean...>. Теперь JavaBean доступен для использования в действии <jsp:getProperty...> на JSP странице. Все, что теперь осталось - это создать файл TLD. Так как такой уже существует, все, что вам нужно, это добавить другой тэг tag перед последним </taglib>. .. <tag> <name>greetingtag</name> <tagclass>cx2.tags.GreetingTag</tagclass> <bodycontent>empty</bodycontent> <info> Adds a HelloWorld Bean to the page context. </info> <attribute> <name>id</name> <required>true</required> </attribute> </tag> ..
<tijtags:greetingtag id="randomgreeting"/>
Для того чтобы ваш тэг был правильно декларирован и был правильно инициализирован атрибут, имя этого атрибута, имя в файле дескриптора библиотеки тэга и имя параметра JavaBean (и методов установки) все должны быть одними и теми же. Для использования тэга случайного приветствия и объекта bean'а, который он создает, вы должны будете указать тэг: <tijtags:greetingtag id="randomgreeting"/>
Затем вам нужно получить свойство из bean'а: <jsp:getProperty name="randomgreeting" property="greeting"/>
|
||||
Последнее изменение этой страницы: 2016-08-01; просмотров: 127; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.209.89 (0.007 с.) |