Новое в инструментарии JavaServer Faces в IBM Rational Application Developer Version 7.5

В статье описаны самые важные новые функции поддержки JavaServer Faces в IBM Rational Application Developer версии 7.5.

Юри Кац, инженер-консультант, IBM, IBM

Юри Кац (Yury Kats) является разработчиком ПО в группе IBM Rational Application Developer и занимается реализацией JSF, компонентов и инструментария.



16.04.2010

Поддержка технологии JavaServer Faces (JSF) уже несколько лет является одной из основных функций IBM Rational Application Developer. Как интегрированная среда разработки (integrated development environment, IDE), Rational Application Developer предлагает разработчикам Web-приложений существенную поддержку в создании JSF-приложений при помощи функций встроенного инструментария и расширенного набора JSF-компонентов.

Новая версия Rational Application Developer, 7.5, продолжает эту традицию и содержит новые функции, позволяющие сделать разработку JSF-приложений более легкой и быстрой, чем раньше. В этой статье мы перечислим самые важные и заслуживающие упоминания новые функции.

Стандартные библиотеки JSF-компонентов

Вероятно, это самое важное и самое нужное дополнение к набору JSF-функций Rational Application Developer. Хотя в  Rational Application Developer имеется расширенная библиотека компонентов JSF, разработанная IBM, многие разработчики хотели бы иметь возможность использовать другие библиотеки компонентов, например, MyFaces Tomahawk, MyFaces Trinidad или JBoss RichFaces.

Хотя в Web-приложении всегда можно было использовать любую библиотеку компонентов, их применение было ограничено из-за необходимости редактировать вручную страницы JavaServer Pages (JSP) и XML-файлы в режиме исходного кода. Добавить в  Rational Application Developer информацию о сторонних библиотеках JSF-компонентов так, чтобы эти компоненты отображались в палитре инструментов, визуализировались в представлении Design, поддерживались представлениями Properties и Quick Edit, в общем, стали частью интегрированной среды разработки вместе с JSF-компонентами от IBM, было довольно трудной задачей.

Теперь ситуация изменилась. В версии 7.5 разработчики могут указать метаданные о библиотеке компонентов общего назначения, а инструментарий распознает такие библиотеки и сделает их частью интегрированной среды разработки. Метаданные можно создать при помощи мастера и просто указать файл Java-архива (JAR) библиотеки, после чего можно отредактировать метаданные при помощи специализированного редактора и использовать совместно с другими разработчиками.

Сначала надо создать новое определение библиотеки Faces и выбрать JAR-файл, содержащий эту библиотеку (в файловой системе или в текущей рабочей области).

Например, чтобы обеспечить поддержку библиотеки MyFaces Tomahawk в  Rational Application Developer , необходимо загрузить JAR-файл Tomahawk с Web-сайта MyFaces, а затем использовать его для создания определения библиотеки; для этого нужно выбрать из меню команды File > New > Other > Faces library definition и на странице мастера указать JAR-файл Tomahawk (рисунок 1).

Рисунок 1. Создание определения библиотеки JavaServer Faces
Создание определения библиотеки JavaServer Faces

После нажатия кнопки Finish на странице мастера,  Rational Application Developer приступит к анализу JAR-файла и соберет информацию о том, какие JSF-компоненты он содержит, каковы атрибуты компонентов и всю прочую информацию, которую можно найти о библиотеке в JAR-файле. Все данные будут сохранены в файле определения JSF-библиотеки (JSF library definition, JLD), после чего этот файл будет открыт в редакторе, чтобы можно было изменить и настроить его в соответствии с вашими предпочтениями (рисунок 2). Конечно, вы не должны вносить все изменения сразу же после создания файла, потому что в любой момент можете открыть JLD-файл, отредактировать его и указать дополнительную информацию о библиотеке.

Рисунок 2. Редактор определений библиотек
Библиотека

В  Rational Application Developer можно указать довольно много информации о библиотеке. Вот лишь небольшая часть того, что вы можете контролировать.

  • Палитра. Какие компоненты будут отображаться в палитре и как именно, включая порядок, изображения и подписи. Сразу после создания определения из JAR-файла, в палитре отображаются все компоненты.
  • Атрибуты компонентов. Можно определить тип каждого атрибута, чтобы у  Rational Application Developer была информация о том, какие значения являются корректными для данного атрибута и какие вспомогательные диалоговые окна можно предложить в процессе редактирования значения атрибута. Сразу после создания определения библиотеки из JAR-файла многим стандартным JSF-атрибутам (таким, как ID, value, rendered) будут автоматически присвоены соответствующие типы.
  • Визуализация компонентов в представлении Design. Модуль Page Designer в  Rational Application Developer будет пытаться автоматически визуализировать все JSF-компоненты в представлении Design посредством вызова модуля рендеринга компонентов. Хотя этот способ может работать для достаточно простых компонентов вроде inputText, скорее всего, он не сможет визуализировать более сложные компоненты просто потому, что код их визуализации достаточно сложный и зависит от артефактов, которые недоступны во время проектирования (например, библиотеки JavaScript или подключения к данным). Для таких компонентов можно указать фрагменты HTML-кода, которые будут использоваться при визуализации на этапе проектирования вместо  запуска модуля рендеринга.
  • Ресурсы. Многие JSF-компоненты требуют добавления на страницу или в приложение дополнительных ресурсов. Эти ресурсы, как правило, включают файлы JavaScript и CSS, обновления файлов Web.xml и faces-config.xml приложения или дополнительные JAR-файлы, которые необходимы для библиотеки в период исполнения.

После создания определения библиотеки и сохранения его в рабочей области, Rational Application Developer получает информацию о новой библиотеке, после чего новые компоненты могут использоваться в IDE так же, как компоненты, разработанные IBM: в палитре (рисунок 3), представлениях Design (рисунок 4), Properties, Quick Edit, Data binding.

Рисунок 3. Библиотеки компонентов в палитре
Библиотеки компонентов
Рисунок 4. Визуализация на этапе проектирования
Визуализация

Custom JSF components

Правда, замечательно, что можно использовать все доступные на данный момент библиотеки JSF-компонентов? Но как поступить в том случае, если ни одна из библиотек не содержит нужного вам компонента? Конечно, создать свой компонент! Вы думаете, это слишком сложно? Только не в Rational Application Developer V7.5. В новой версии очень легко создавать пользовательские JSF-компоненты из готовых компонентов независимо от того, нужно ли вам создать новый компонент или вы обнаружили, что постоянно и неоднократно используете несколько простых компонентов (например, для ввода информации о человеке).

Создание нового JSF-компонента в Rational Application Developer очень похоже на разработку обычной Web-страницы. По существу, проект Faces Componet Library – это разновидность Web-проекта, поэтому пользовательский компонент разрабатывается так же, как обычная страница JSP. В вашем распоряжении все знакомые инструменты. Вы можете перетаскивать имеющиеся JSF-компоненты из палитры, привязывать их к данным при помощи представления Page Data, настраивать их поведение при помощи представления Properties и записывать скрипты событий при помощи представления Quick Edit.

При любом изменении пользовательских компонентов Rational Application Developer зафиксирует изменения и автоматически сгенерирует Java-файлы, из которых состоит JSF-компонент (например, классы тега и компонента) и XML-файлы, содержащие конфигурации компонента и библиотеки (faces-config.xml и TLD). Затем все сгенерированные артефакты будут помещены в один JAR-файл, который можно будет использовать совместно с другими разработчиками и в любых Web-приложениях Faces.

Сначала создайте библиотеку компонентов, выбрав из меню File > New > Project > Faces Component Library Project. Открывшийся мастер (рисунок 5) уже знаком нам по созданию Web-проектов, за исключением того, что он  использует особую конфигурацию.

Рисунок 5. Мастер создания библиотеки компонентов Faces Component Library
Новый проект Faces Component

Библиотека компонентов содержит JSF-компоненты (столько, сколько вам нужно). Способ создания нового компонента аналогичен созданию новой Web-страницы. Достаточно выбрать из меню команды New >Faces Custom Component (рисунок 6).

Рисунок 6. Создание нового Faces-компонента
Создание нового компонента

После создания компонента можно настроить его свойства – например, имя, тип – и список атрибутов, а затем добавить и настроить имеющиеся JFS-компоненты из палитры.

Например, если вы заметили, что на ваших Web-страницах часто встречаются поля ввода, в которые вводятся имена и возраст пользователей, то вы можете создать новый компонент с именем "person", чтобы вместо многократной репликации одного и того же тега на нескольких страницах можно было использовать один тег. Такой компонент может иметь три специфических атрибута (для имени, фамилии и даты рождения) и три поля вода, размещенных на сетке данных.

На рисунке 7 показано, как может выглядеть исходный код компонента, как он отображается в представлении Design и какие свойства доступны в представлении Properties. Обратите внимание на все обычные и знакомые JSF-теги, которые использовались для создания нового компонента.

Рисунок 7. Компонент "Person" после определения
Новый компонент после определения

После того как вы закончите работу и сохраните страницу, содержащую компонент, Rational Application Developer сгенерирует Java- и XML-файлы и поместит их в JAR-файл. Кроме того, в том же проекте библиотеки будет сгенерирована тестовая страница, чтобы можно было без лишних сложностей протестировать рендеринг компонента и его поведение в действии в период исполнения.

Вы и другие разработчики можете использовать получившуюся библиотеку компонентов в Rational Application Developer так же, как и библиотеки компонентов Generic JSF, о которых говорилось в предыдущем разделе. На рисунке 8 новый компонент показан в составе палитры, в исходном коде JSP-страницы, визуализированном в представлении Design и вместе со всеми доступными атрибутами в представлении Properties. Обратите внимание на то, что несколько тегов JSF, которые использовались в исходном коде, показанном на рисунке 7, превратились всего в один тег <fc:person>.

Рисунок 8. Использование нового компонента Person в приложении
Использование нового компонента

Шаблоны генерации

Еще одним замечательным усовершенствованием в Rational Application Developer V7.5 является возможность выбрать, какие JSF-теги будут сгенерированы при добавлении объекта данных на страницу. При перетаскивании объекта данных из палитры представления Page Data  или любого другого источника Rational Application Developer анализирует тип данных объекта и предлагает пользователю список элементов управления JSF, которые могут быть сгенерированы для данного объекта.

Например, если вы перетаскиваете на страницу байтовый массив, Rational Application Developer выведет запрос о том, как должен использоваться этот массив на странице – как изображение (Image), ссылка (Link) или компонент управления загрузкой файлов (File Upload component) (рисунок 9). После того как вы сделаете выбор, на страницу будет добавлено несколько JSF-тегов в соответствии с вашим выбором на странице мастера.

Рисунок 9. Добавление объекта "байтовый массив"
Объект

Rational Application Developer обычно хорошо предсказывает, какие типы элементов управления JSF подходят к данному случаю, и генерирует надежный и эффективный код для JSP-страниц. Но что делать, если вы не согласны с выбором, который предлагает Rational Application Developer, или с тегами, которые он генерирует, например, если вы ранее добавили поддержку для новой библиотеки компонентов (см. раздел выше), и теперь хотите, чтобы Rational Application Developer использовал новые компоненты при любом перетаскивании данных на страницу? Именно здесь в игру вступают новые шаблоны генерации.

Раньше генерация кода для добавляемых при помощи перетаскивания мышью данных основывалась на шаблонах, однако эти шаблоны были довольно сложными, трудными для понимания; кроме того, их было довольно сложно изменить и невозможно найти в пользовательском интерфейсе Rational Application Developer. В новой версии ситуация изменилась. Все шаблоны для генерации кода JSF теперь можно найти в диалоговом окне Preferences; эти шаблоны используют упрощенный JSP-подобный синтаксис. Чтобы увидеть список доступных шаблонов, выберите из меню команды Window > Preferences и перейдите к элементу Web > JavaServer Faces Tools > Generation Templates (рисунок 10).

Рисунок 10. Шаблоны генерации
Шаблоны генерации

Существуют три типа шаблонов:

  • для данных – для простых типов данных, например, string, Boolean, integer, date и т. п.;
  • итеративные – для множественных типов, например, массивов и списков;
  • для методов – для Java-методов.

Каждый шаблон ассоциирован с Java-типом, имеет имя, которое отображается в мастере (см. рисунок 9), может использоваться в режиме ввода или вывода и описывается при помощи JSP-подобного синтаксиса, путем указания тегов, которые будут сгенерированы при использовании шаблона, с переменными для настройки атрибутов тега.

Итеративные шаблоны, ассоциированные с множественными типами, например, массивами и списками (рисунок 11), определяют охватывающий тег, (например, <dataTable>) и итеративный тег (например, тег <column>).

Рисунок 11. Итеративный шаблон
Пример итеративного шаблона

В Rational Application Developer включено много шаблонов генерации для большинства стандартных Java-типов и для использования стандартных и IBM-компонентов JSF. Теперь вы можете легко изменить эти шаблоны или создать новые при помощи пользовательского интерфейса команды Preferences. Кроме того, шаблоны можно импортировать и экспортировать, чтобы делиться ими с другими разработчиками.

И последнее, но не менее важное: шаблоны генерации можно также указать при определении библиотеки (см. предыдущий раздел). Если вы указываете метаданные для новой библиотеки компонентов, как говорилось ранее, вы также можете создать шаблоны генерации, использующие компоненты из этой библиотеки. Например, если вы создали определение библиотеки для MyFaces Tomahawk, то можете создать шаблон генерации для типа данных java.util.Date и использовать компонент Tomahawk <t:inputDate>.


Проверка корректности на этапе проектирования

Проверка корректности на этапе проектирования – мощный инструмент для поиска дефектов и потенциальных проблем в Web-приложении без развертывания на сервере и отладки. В Rational Application Developer V7.5 значительно расширены возможности функции проверки корректности JSF по сравнению с предыдущими версиями. Теперь она может проверять JSF-выражения, типы данных, связывать JSF-теги с конфигурационными файлами JSF и многое другое.

На рисунке 12 показано несколько примеров предупреждений Rational Application Developer по поводу JSF-страницы:

  • первый тег <commandButton> использует выход навигации от "success", но в файле faces-config.xml отсутствует соответствующее правило навигации;
  • второй тег <commandButton> использует метод bean-компонента как собственную операцию, но управляемый файлом конфигурации bean-компонент не имеет метода с именем "outcome" ;
  • тег <inputText> привязан к объекту java.util.Date, но не использует конвертер.

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

Рисунок 12. Новые возможности функции проверки корректности
Возможности функции проверки корректности
Рисунок 13. Параметры проверки корректности
Новые параметры проверки корректности JSF

Новая функция проверки корректности JSF не только весьма эффективна, но и легко настраивается при помощи вкладки Preferences пользовательского интерфейса (рисунок 13). На этой вкладке вы найдете довольно много параметров проверки корректности; для этого достаточно перейти к элементу Web > JavaServer Faces Tools > Validation.

Однако учтите, что Rational Application Developer не всегда может правильно оценить и проверить корректность выражений JSF EL на этапе проектирования, особенно если выражения сложные или используют объекты данных с типом, который не существует на этапе проектирования. Следовательно, вполне может быть, что Rational Application Developer сгенерирует предупреждения для совершенно корректных выражений. Если это имеет место, то вы можете либо игнорировать эти предупреждения, либо изменить параметры проверки корректности таким образом, чтобы Rational Application Developer игнорировал определенные правила проверки корректности.


Последние две функции, описанные в нашей статье, смогут по достоинству оценить те разработчики, которые предпочитают работать напрямую с исходным кодом JSP, а не с визуальным представлением страницы. В Rational Application Developer V7.5 в средства редактирования исходного кода JSF внесены два значительных усовершенствования: функция Content Assist и гиперссылки.

Функция Content Assist знакома любому разработчику Java или JSP. Вот как она работает: как только вы захотите получить рекомендации Rational Application Developer по поводу вводимого вами кода, нажмите Ctrl+Space и выберите имя Java-метода, JSP-тег или что-то другое, подходящее в данном контексте; при этом вам не придется запоминать и вводить весь код самому.

Работая с JSP-страницами в Rational Application Developer V7.5, функция Content Assist учитывает вашу среду JSF и может порекомендовать имена управляемых bean-компонентов (рисунок 14), свойства и методы, а также значения атрибутов (рисунок 15).

Рисунок 14. Content Assist для выражения JSF
Выражение JSF
Рисунок 15. Ответ Content Assist для атрибута JSF
Ответ для атрибута JSF

Еще одно вспомогательное средство для редактирования исходного кода, которое может быть вам знакомо по работе с Rational Application Developer или Eclipse – это гиперссылки. Если навести указатель мыши на фрагмент кода, удерживая клавишу Ctrl на клавиатуре, то этот фрагмент кода может превратиться в гиперссылку. Нажав левой кнопкой мыши на этой ссылке, вы перейдете в ту область проекта, в которой определен данный фрагмент кода. Многие Java-разработчики используют этот метод для навигации между методами в Java-классах.

В данной версии  вы можете использовать ту же возможность сэкономить время при навигации между JSF-артефактами. Редакторы Rational Application Developer учитывают контекст JSF, в котором вы находитесь, и могут перенести вас непосредственно из JSP в Java-класс или из файла faces-config.xml в JSP при помощи всего одного нажатия кнопки мыши.

На рисунке 16 показаны два примера использования гиперссылок в приложении JSF.

Рисунок 16. Гиперссылки
Использование гиперссылок в приложении JSF

Если вы, удерживая клавишу Ctrl, нажмете левой кнопкой мыши на имени управляемого bean-компонента (config) в исходном коде JSP-страницы, то окажетесь в файле faces-config.xml, в котором определен данный управляемый bean-компонент. Применив клавиатурную комбинацию Ctrl+click для метода bean-компонента (doAction), вы окажетесь в окне Java-редактора для класса, в котором определен данный метод.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы в первый раз заходите в developerWorks. Выберите данные в своем профиле (имя, страна/регион, компания) которые будут общедоступными и будут отображаться, когда вы публикуете какую-либо информацию. Вы можете изменить данные вашего ИБМ аккаунта в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Rational
ArticleID=483237
ArticleTitle=Новое в инструментарии JavaServer Faces в IBM Rational Application Developer Version 7.5
publish-date=04162010