Изучаем Java EE 7 - [169]
>public @interface Model {
>}
>@Model
>public class BookController {
>··private Book book = new Book();
>··public String doCreateBook() {
>····createBook(book);
>····return "listBooks.xhtml";
>··}
>··// Конструкторы, методы работы со свойствами
>}
Наличие у класса аннотации @javax.inject.Named позволяет языку выражений использовать эту страницу. С помощью аннотации @Named также можно указать другое имя для компонента-подложки (которое по умолчанию является именем класса и начинается со строчной буквы). Компоненты пользовательского интерфейса связаны со свойствами компонента-подложки, изменение имени по умолчанию влияет на способ вызова свойства или метода. В коде, представленном в листинге 11.6, компонент-подложка переименовывается в MyBean.
>@Named("myBean")
>@RequestScoped
>public class BookController06 {
>···private Book book = new Book();
>···public String doCreateBook() {
>·····createBook(book);
>·····return "listBooks.xhtml";
>···}
>···// Конструкторы, методы работы со свойствами
>}
Чтобы вызвать атрибуты или методы этого компонента-подложки на ваших страницах, вам следует использовать переопределенное имя таким образом:
>
>
>··
>·····книгу
>
До появления версии JSF 2.2 вы должны были аннотировать компонент-подложку с помощью аннотации @javax.faces.bean.ManagedBean. Это вводит в заблуждение, потому что данная аннотация имеет имя Managed Bean (Управляемый компонент), определяющее более общую компонентную модель Java EE, которая является частью JSR-25 °Common Annotations (@javax.annotation.ManagedBean). Но что более важно, в версии JSF 2.2 была улучшена интеграция с CDI и теперь рекомендуется использовать аннотацию CDI @Named, а также области действия CDI. Пакет javax.faces.bean будет объявлен устаревшим в следующей версии JSF.
Области действия
Объекты, которые создаются как часть компонента-подложки, имеют определенный срок службы и могут или не могут быть доступными для компонентов пользовательского интерфейса или объектов в веб-приложении. Срок службы и доступность объекта известны как область действия. В веб-приложении (в компонентах-подложках и страницах) вы можете указать область действия объекта, используя разную продолжительность.
• Приложение — это наименее ограничительный вариант (используйте аннотацию @ApplicationScoped для вашего компонента-подложки) с самой большой продолжительностью жизни. Созданные объекты доступны во всех циклах запросов/ответов для всех клиентов, использующих веб-приложение, до тех пор, пока приложение активно. Эти объекты можно вызывать одновременно из нескольких источников, они должны быть потокобезопасными (устанавливается с помощью ключевого слова syncronized). Объекты с такой областью действия могут использовать другие объекты либо без области действия, либо с такой же областью действия.
• Сессия — объекты доступны для любых циклов запросов/ответов, которые принадлежат сессии клиента (@SessionScoped). Эти объекты имеют состояние, которое сохраняется между запросами и хранится до тех пор, пока сессия не будет завершена. Объекты с такой областью действия могут использовать и другие объекты либо без области действия, либо с такой же областью действия, либо с областью действия на уровне приложения.
• Представление — объекты доступны в пределах заданного представления, пока оно не изменится, и их состояние сохраняется до тех пор, пока пользователь не перейдет к новому представлению (в этот момент состояние стирается). Объекты с такой областью действия могут использовать и другие объекты либо без области действия, либо с такой же областью действия, либо с областью действия на уровне приложения или сеанса. Компоненты-подложки могут быть аннотированы с помощью @ViewScoped.
• Запрос — состояние доступно в начале запроса и до тех пор, пока клиенту не был отправлен ответ (аннотация @RequestScoped). Клиент может выполнять несколько запросов, но остаться на одном и том же представлении. Именно поэтому продолжительность @ViewScoped больше, чем @RequestScoped. Объекты с такой областью действия могут использовать и другие объекты либо без области действия, либо с такой же областью действия, либо с областью действия на уровне приложения или сеанса.
• Момент — эта область действия была введена в версии JSF 2.0 и представляет собой короткую коммуникацию. Это способ передачи временных объектов, которые распространяются на одном представлении и очищаются перед переходом к другому. Такая область действия может быть использована только программно, поскольку аннотации для нее не существует.
• Поток — объекты в этой области действия создаются, когда пользователь входит в указанный поток, и освобождаются, когда он выходит из потока (с помощью аннотации @FlowScoped).
Все аннотации областей видимости, используемые в JSF 2.2, теперь являются областями действия CDI (то есть все они аннотированы @javax.enterprise.context.NormalScope). Но они находятся в разных спецификациях: @ApplicationScoped, @RequestScoped и @SessionScoped являются частью CDI, а @ViewScoped и @FlowScoped определяются в спецификации JSF.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.