Skip to content

Latest commit

 

History

History
27 lines (16 loc) · 2.68 KB

using_client_beans_recipe.adoc

File metadata and controls

27 lines (16 loc) · 2.68 KB

Использование бинов клиентского уровня

Теперь давайте немного усложним задачу из предыдущего раздела. Допустим, требуется вызывать расчет из двух экранов: и из браузера, и из редактора. Чтобы не дублировать код, нужно извлечь код из контроллера и поместить в некоторое общедоступное место. Это может быть управляемый бин клиентского уровня.

Управляемый бин - это класс с аннотацией @Component. Он может быть инжектирован в другие бины и контроллеры экранов, или получен с помощью статического метода AppBeans.get(). Если класс бина реализует некоторый интерфейс, то к нему можно обращаться через этот интерфейс.

Имейте в виду, что для того чтобы бин был доступен для контроллеров экранов, он должен располагаться в одном из следующих модулей: global, gui или web вашего проекта. В случае global, бин будет также доступен на среднем слое.

См. кнопку Calculate discount на экранах браузера и редактора в демо-приложении, и реализацию:

using client beans 1
  • {proj_business_logic}/blob/master/modules/web/src/com/company/sample/web/ex2/customer/CustomerBrowse.java[CustomerBrowse.java] - контроллер браузера.

  • {proj_business_logic}/blob/master/modules/web/src/com/company/sample/web/ex2/customer/CustomerEdit.java[CustomerEdit.java] - контроллер редактора.

  • {proj_business_logic}/blob/master/modules/web/src/com/company/sample/web/ex2/DiscountCalculator.java[DiscountCalculator.java] - бин расчета скидок. Он использует DataManager для загрузки списка заказов данного заказчика из базы данных.