Статьи

JSF 2.0 с Spring Roo

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

Я никогда не давал шанс JSF. В JSF 1.X была ограниченная поддержка инструментов, компоненты были довольно простыми. это действительно не привлекло мое внимание. Я знаю, что JSF 2.0 был выпущен более 2-х лет назад, так что это было давно в моем списке задач.

В последнее время я много работаю с Spring Roo, и, поскольку Spring Roo 1.2.0.M1 был выпущен, я прочитал запись в блоге Алана Стюарда, в которой упоминалось, что следующий релиз 1.2 будет включать поддержку JSF / PrimeFaces.

Я не мог больше ждать, поэтому продолжил работу со снимком и создал веб-приложение JSF 2.0. Это впечатляет, если вы хотите увидеть результат, я развернул его на CloudFoundry: http://roojsfpreview.cloudfoundry.com/ (если у вас еще нет учетной записи cloudfoundry, вам обязательно нужно зарегистрировать бесплатную учетную запись)

Снимок экрана развернутого примера приложения JSF 2.0
нажмите здесь, чтобы увидеть его в полном размере

Как продать свой мозг?

На днях я проводил весеннюю тренировку, и участники просто сказали: пожалуйста, больше примеров пиццы! Поэтому они придумали идею создать специальный магазин для продажи органов.

Конечно, это, вероятно, политически некорректно, но привлекло их внимание до конца обучения. Итак, здесь мы создаем ‘орган-залив’ за 10 минут

— Загрузите последний снимок из CI springsource: http://static.springsource.org/downloads/nightly/snapshot-download.php?project=ROO

 unzip /path/to/spring-roo-1.2.0.BUILD-SNAPSHOT_201110XX.XXXXXXXXXXX.zip
 ROO_HOME=$(readlink -f spring-roo-1.2.0.BUILD-SNAPSHOT)
 PATH=$ROO_HOME/bin:$PATH
 roo.sh
    ____  ____  ____  
   / __ \/ __ \/ __ \ 
  / /_/ / / / / / / / 
 / _, _/ /_/ / /_/ /  
/_/ |_|\____/\____/    1.2.0.BUILD-SNAPSHOT [rev 1195a76]


Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

Как только вы получите приглашение оболочки roo, введите следующие команды:

project --topLevelPackage com.organbay --projectName rooj-jsf-app
persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

enum type --class ~.domain.BloodType 
enum constant --name Group_A
enum constant --name Group_B
enum constant --name Group_AB
enum constant --name Group_0

entity jpa --class ~.domain.Organ
field number --fieldName price --type java.lang.Integer --notNull --min 5
field string --fieldName name --notNull 
field date --fieldName bestBefore --type java.util.Date --dateFormat SHORT --notNull 
field string --fieldName description

entity jpa --class ~.domain.Donor
field string --fieldName name --sizeMax 25 --notNull
field enum --fieldName bloodType --type ~.domain.BloodType --notNull
field date --fieldName birthDate --type java.util.Date --past
field string --fieldName email --regexp "[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+" --notNull
field set --fieldName organs --type ~.domain.Organ --mappedBy donor --notNull false --cardinality ONE_TO_MANY
field reference --fieldName donor --class ~.domain.Organ --type ~.domain.Donor --notNull

web jsf setup --implementation APACHE_MYFACES --theme  EGGPLANT
web jsf all --package ~.jsf

quit

Теперь приложение готово к развертыванию. Цель tomcat: run maven была бы идеальной для этой цели. Чтобы использовать JSF 2.0, вам понадобится tomcat 7.x, но, к сожалению, версия плагина tomcat maven, поддерживающая tomcat 7, находится в стадии разработки, поэтому я обнаружил, что его легче использовать грузовой плагин:

mvn package org.codehaus.cargo:cargo-maven2-plugin:run -Dcargo.maven.containerId=tomcat7x -Dcargo.maven.containerUrl=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.zip

...
[WARNING] [talledLocalContainer] Oct 26, 2011 5:06:08 PM org.apache.catalina.startup.Catalina start
[WARNING] [talledLocalContainer] INFO: Server startup in 31856 ms
[INFO] [talledLocalContainer] Tomcat 7.x started on port [8080]
[INFO] Press Ctrl-C to stop the container...

теперь вы можете открыть веб-приложение в своем браузере: http: // localhost: 8080 / rooj-jsf-app-0.1.0.BUILD-SNAPSHOT / pages / donor.jsf

Разверните его в облаке

если вы хотите поделиться своим новым блестящим веб-приложением в облаке, у вас будет несколько вариантов: amazon ec2, амазонский бобовый стебель, heroku, cloudfoundry, вы называете его.

Я просто выбрал cloudfoundry, поскольку у него есть плагин roo, и для его развертывания потребовалось всего 3 строки:

cloud foundry login --email [email protected] --password idonttellya
cloud foundry deploy --appName roojsfpreview --path /target/rooj-jsf-app-0.1.0.BUILD-SNAPSHOT.war
cloud foundry start app --appName roojsfpreview

Так что больше нет оправдания тому, чтобы не дать JSF 2.0 попробовать. Я был весьма впечатлен сгенерированным приложением простых лиц, с точки зрения привлекательности глаз, и такими функциями, как:

  • Проверка на стороне клиента на основе аннотации JSR-303, прикрепленной к объектам
  • AJAX нумерация страниц
  • Модальные диалоговые окна
  • Виджет календаря
  • Автозаполненный выпадающий список для отношения 1: N
  • Автозаполненный выпадающий список для перечислений
  • автоматическое скрытие всплывающих сообщений типа рычания

Я даже смог добавить переключатель темы за пару минут (возможно, это хороший кандидат для включения в дополнение JSF или, возможно, новое зависимое дополнение JSF). Давайте начнем создавать веб-приложение JSF 2.0 сегодня!

 

Следите за хорошей работой Алана Стюарда и всей команды Spring Roo!