Проект

Общее

Профиль

JSF » История » Версия 3

Александр Александров, 23.04.2019 20:52

1 1 Александр Александров
h1. JSF
2
3
h2. Вопросы
4
5
# Что такое JSF?
6
# Что такое Managed Bean?
7
# Каковы три типа тегов для текстовых полей существуют в JSF?
8
# Что означает аннотация @ManagedProperty?
9
# На что указывает аннотация @ApplicationScoped?
10
# Что такое связывание ресурсов в JSF?
11
# Объясните разницу между required и requiredMessage атрибутов в теге <h:inputText>.
12
# Какие различные типы навигации по страницам поддерживаются в JSF?
13
# Какие фазы жизненного цикла в JSF вы знаете?
14
# Объясните назначение тега <h:form>.
15
# Какие теги используются для action и navigation?
16
# Какие компоненты используются для отображения данных в табличном виде?
17
# Что такое событие (event)?
18
# Как мы можем получить generated event?
19
# Какие различные типы событий существуют в JSF?
20
# Что такое класс-слушатель?
21
# Какое назначение тега facelets?
22
# Назовите несколько facelets тегов.
23
# Какие различные типы валидации используются в JSF?
24
# Какие различные типы выражений поддерживаются JSF EL (Expression Language)?
25
# В чем разница между мгновенными и отложенными выражениями?
26
# Объясните разницу между value expression и method expression.
27
# Расскажите о @ViewScoped, @SessionScoped, @CustomScoped и @RequestScoped аннотациях.
28
# Какие существую способы объявить класс управляемым бином JSF?
29
# Как используются атрибуты name и eager в Managed Bean?
30
# Какие теги для валидации существуют в JSF?
31
# Какие преимущества использования JSF Framework?
32
# Какие различные теги JSF используются для конвертации?
33
# Перечислите преимущества использования языка выражений (expression language)?
34
# Поясните название backing bean.
35
# Какие стандартные библиотеки тегов JSF вы знаете?
36
# Какие основные функции выполняет метод в backing bean?
37
# Каковы различные реализации JSF API вы знаете?
38
# Объясните архитектуру JSF.
39
# Как различные компоненты рендерятся на JSF странице?
40
# Может JSF содержать несколько файлов конфигурации?
41
# Чем различается понятия backing bean и managed bean?
42
# Как отобразить сообщения об ошибках в JSF?
43
# Объясните назначение тега selectOne menu в JSF.
44
# Объясните в чем разница между атрибутами immediate и rendered?
45
# Какие два способа связывания поддерживается JSF?
46
# Какая минимальная конфигурация необходима для JSF приложения?
47
# Что означает navigation rule в JSF?
48
# Расскажите о назначение тегов converter в JSF.
49
# Перечислите преимущества таблицы данных в JSF.
50
# Как реализовать интернационализацию (локализацию) (i18n) в JSF?
51
# Какая модель рендеринга применяется в JSF?
52
# Что такое render kit?
53
# Что такое view object?
54
# Что подразумевается под Bean Scope?
55
# В чем разница между JSF-1 и JSF-2?
56
# Может ли отсутствовать faces-conÙg.xml у JSF приложения?
57
# Сравните JSF и Spring Framework.
58
# Можем ли мы интегрировать JSF с другими популярными фреймворками вроде Spring, Hibernate и т.д.?
59
60
h2. Ответы
61
62
h3. Что такое JSF?
63
64 2 Александр Александров
JavaServer Faces (JSF) - это фреймворк для веб-приложений, написанный на Java. Он служит для того, чтобы облегчать разработку пользовательских интерфейсов для Java EE-приложений. В отличие от прочих MVC-фреймворков, которые управляются запросами, подход JSF основывается на использовании компонентов. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется. JavaServer Faces включает набор API для представления компонент пользовательского интерфейса (UI) и управления их состоянием, обработкой событий и валидацией вводимой информации, определения навигации, а также поддержку интернационализации (i18n) и доступности (accessibility). В JSF 2.0 в качестве обработчика представления используется технология Facelets которая пришла на замену JSP.
65
66 1 Александр Александров
h3. Что такое Managed Bean?
67
68 2 Александр Александров
В технологии JSF управляемые бины применяются для сохранения состояния webстраниц. Создание бинов и манипулирование ими осуществляются под управлением
69
реализации JSF, которая выполняет следующее:
70
71
* Создание и уничтожение бинов по мере необходимости (этим объясняется происхождение термина "управляемые бины"). Для создания можно использовать аннотацию @ManagedBean.
72
* Считывание свойств бина при отображении web-страницы
73
* Задание свойств бина при отправке формы
74
75 1 Александр Александров
h3. Каковы три типа тегов для текстовых полей существуют в JSF?
76
77 2 Александр Александров
<h:inputText> - стандартное текстовое поле для ввода данных.
78
<h:inputSecret> - вводимые данные скрываются (например точками).
79
<h:inputTextarea> - используется для возможности ввода больших объемов текстовой информации.
80
81 1 Александр Александров
h3. Что означает аннотация @ManagedProperty?
82
83 2 Александр Александров
Аннотация @ManagedProperty позволяет внедрять один управляемый бин в другой.
84
85
<pre><code class="java">
86
@ManagedProperty(value = "{#beanName}")
87
private BeanName beanName;
88
</code></pre>
89
90 1 Александр Александров
h3. На что указывает аннотация @ApplicationScoped?
91
92 2 Александр Александров
Аннотация @ApplicationScoped указывает на то, что управляемый бин будет доступен на протяжении времени жизни приложения.
93
94 1 Александр Александров
h3. Что такое связывание ресурсов в JSF?
95
96 2 Александр Александров
Сохранение UI labels, дат, сообщений и другой текстовой информации графических компонентов в различных properties файлах называется связыванием ресурсов. Типичным примером может служить локализация приложения, когда в нескольких файлах resuorcebundle.properties находятся варианты записи лейблов для нескольких языков. Это позволяет не хардкодить информацию на представлениях, а иметь возможность динамического связывания представления и кода в управляемом бине или файле свойств.
97
98
{{dmsf_image(296)}}
99
100
Потом эту информацию можно связать на xhtml странице:
101
102
{{dmsf_image(297)}}
103
104
Так же можно связывать данные на xhtml страницы с управляемым бином с помощью геттеров и сеттеров.
105
106 1 Александр Александров
h3. Объясните разницу между required и requiredMessage атрибутов в теге <h:inputText>.
107
108 2 Александр Александров
Эти два тега объявляют необходимость обязательного заполнения текстового поля, а так же сообщения, которое будет выполнено при нарушении этого правила. Такой подход используется при валидации компонентов, например для требования заполнить имя пользователя, пароль или email в соответствующих полях.
109
110 1 Александр Александров
h3. Какие различные типы навигации по страницам поддерживаются в JSF?
111
112 2 Александр Александров
В JSF поддерживаются следующие типы навигации по страницам:
113
114
* Implicit Navigation (неявная навигация),
115
* Navigation through Managed Bean (навигация с помощью управляемого бина),
116
* Navigation through faces-conÙg.xml (навигация через настройки faces-conÙg.xml),
117
* Forward versus Redirect navigation
118
* Conditional Navigation (условная навигация)
119
120 1 Александр Александров
h3. Какие фазы жизненного цикла в JSF вы знаете?
121
122 2 Александр Александров
{{dmsf_image(298)}}
123
124
Фазы жизненного цикла:
125
126
* Восстановление представления - для запрошенной страницы либо извлекается дерево компонентов (если страница уже запрашивалась), либо создается новое дерево компонентов (если страница запрашивается впервые). Для компонентов запрашиваемой страницы восстанавливаются их прошлые состояния (веб-форма заполняет вводимыми значениями).
127
* Применение значений запроса - всем объектам дерева компонентов присваиваются соответствующие им значения из запроса. Так же, в этой фазе, при необходимости, добавляются события(щелчок по кнопке или ссылке) в очередь событий.
128
* Обработка проверок - отправленные строковые значения преобразуются в "локальные значения", которые могут представлять собой объекты любого типа. Применяются валидаторы.
129
* Обновление значений модели - изменяются свойства привязанных к компонентам бинов.
130
* Вызов приложения - выполняется метод action кнопки или ссылки, щелчок по которой привел к отправке формы. Этот метод может выполнять любую прикладную обработку. Он возвращает строку, которая передается обработчику навигации.
131
* Визуализация ответа - генерируется html и отправляется клиенту.
132
133 1 Александр Александров
h3. Объясните назначение тега <h:form>.
134
135 2 Александр Александров
Тег <h:form> генерирует элемент формы HTML, который использует "POST" запрос для подтверждения формы и пересылки данных из формы. Поведение при декодировании: получает Map из свойства "requestParameterMap" из ExternalContext. Если map содержит "clientId" этого UIForm компонента, то вызывается setSubmitted(true) на форме, в противном случае вызывается setSubmitted(false) на форме.
136
137
Поведение кодирования: Значение атрибута "метод" должно быть "post". Значение атрибута "action" должно быть результатом передачи идентификатора текущего представления к методу getActionURL() из ViewHandler данного приложения, далее передача String к методу encodeActionURL() из ExternalContext. Необходимо вызвать ViewHandler.writeState() до закрытия элемента "form". Подробнее о деталях поведения формы можно прочитать на сайте Oracle.
138
139 1 Александр Александров
h3. Какие теги используются для action и navigation?
140
141 2 Александр Александров
К тегам для команд action и навигации относятся:
142
143
<h:commandButton> - генерирует HTML button, которая подтверждает форму и таким образом позволяет начать обработку данных, введенных пользователем.
144
<h:commandLink> - генерирует HTML гиперссылку, эквивалентную тегу анкор в HTML. Может быть связана с управляемым бином или классом Action для обработки событий.
145
146 1 Александр Александров
h3. Какие компоненты используются для отображения данных в табличном виде?
147
148 2 Александр Александров
Основным компонентом для работы с таблицами является <h:dataTable>. Содержит обширные настройки отображения и взаимодействия между представлением и управляемыми бинами.
149
150 1 Александр Александров
h3. Что такое событие (event)?
151
152 2 Александр Александров
Событие - реакция на действие пользователя, например нажатие кнопки, активация ссылки или изменение компонента. JSF поддерживает listeners (слушатели), которые реагируют на различные возникающие события и позволяют обрабатывать их.
153
154 1 Александр Александров
h3. Как мы можем получить generated event?
155
156 2 Александр Александров
Чтобы получить сгенерированное событие мы можем воспользоваться следующей записью:
157
158
{{dmsf_image(299)}}
159
160 1 Александр Александров
h3. Какие различные типы событий существуют в JSF?
161
162 2 Александр Александров
В JSF различают три вида событий:
163
164
* Action Events: событие, которое создается ui component, например command button или command hyperlink. Обрабатывается в ManagedBean с помощью метода processAction(ActionEvent ae).
165
* Value Change Events: событие связанное с изменением значения UI компонента. К компонентам, которые могут генерировать value change events относятся: textÙeld, radio button, list box и т.д.. Этот тип событий создается сразу же после изменения значения в UI компоненте. Обрабатывается в ManagedBean с помощью метода someMethod(ValueChangeEvent vc).
166
* Phase Events: этот тип событий возникает в одной из шести фаз жизненного цикла JFS и выполняется либо в начале, либо в конце каждой фазы. Обрабатывается в ManagedBean с помощью методов: beforePhase(PhaseEvent pe), afterPhase(PhaseEvent pe), PhaseId getPhaseId().
167
168 1 Александр Александров
h3. Что такое класс-слушатель?
169
170 2 Александр Александров
Класс, который связан с возникающим событием называется класс слушатель (listener class). Создать такой класс можно реализовав интерфейсы PhaseListener, ActionListener или метод с входным параметром (ValueChangeEvent ev).
171
172 1 Александр Александров
h3. Какое назначение тега facelets?
173
174 2 Александр Александров
JSF предоставляет специальный набор тегов, которая дает большую гибкость для управления общими тегами / частями в одном месте для нескольких приложений. Эти теги позволяют создать единый шаблон, который может быть использован в различных приложениях. Включить Facelets теги можно следующим образом:
175
176
{{dmsf_image(300)}}
177
178 1 Александр Александров
h3. Назовите несколько facelets тегов.
179
180 2 Александр Александров
Наиболее распространенные facelets теги: <ui:component>, <ui:composition>, <ui:decorate>, <ui:deÙne>, <ui:fragment>, <ui:include>, <ui:insert>, <ui:param>, <ui:remove>, <ui:repeat>.
181
182 1 Александр Александров
h3. Какие различные типы валидации используются в JSF?
183
184 2 Александр Александров
В JSF есть два типа валидации:
185
186
* Declarative Validations - валидация, которая срабатывает при помощи стандартных валидаторов JSF или Bean валидаторов.
187
* Imperative validation - стандартных сообщений о проверке обычно не достаточно и валидация, которая переопределяет стандартную относится к императивному типу проверок.
188
189
{{dmsf_image(301)}}
190
191
Так же есть возможность создать свой собственный класс валидатор с помощью реализации интерфейса Validator и переопределение необходимого метода.
192
193 1 Александр Александров
h3. Какие различные типы выражений поддерживаются JSF EL (Expression Language)?
194
195 2 Александр Александров
Различают три типа выражений в JSF Expression Language:
196
197
* Immediate value expressions - выполняются сразу при отображении страницы. Записываются как ${}.
198
* Deferred value expressions - выполняются тогда, когда это необходимо (когда к ним обращаются). Синтаксис: #{expression}. Подразделяются на value expression и method expression.
199
* Value expression and method expression. Выражения значения подразделяются на read only и rear-write. Записываются как #{beanName.propertyName}. Method expression позволяют вызывать метод из представления. Синтаксис #{beanName.methodName()}.
200
201 1 Александр Александров
h3. В чем разница между мгновенными и отложенными выражениями?
202
203 2 Александр Александров
Мгновенные выражения выполняются и вычисляются на этапе рендера отображения. Отложенные выражения выполняются при непосредственном вызове. Например выполнение метода при нажатии на кнопку или получения значения свойства при построении фрагмента отображения (например при построении таблицы необходимо получить значения данных).
204
205 1 Александр Александров
h3. Объясните разницу между value expression и method expression.
206
207 2 Александр Александров
Value expression используются для работы со свойствами в управляемом бине. В случае, если для свойства есть только геттер такое выражение относят к read only.\ Если для свойства есть и геттер и сеттер, то свойство доступно для чтения и записи. Method expression используется для вызова метода в управляемом бине и получения (если необходимо) его результата для последующей обработки в представлении или другом коде.
208
209 1 Александр Александров
h3. Расскажите о @ViewScoped, @SessionScoped, @CustomScoped и @RequestScoped аннотациях.
210
211 2 Александр Александров
@ViewScoped: означает, что управляемый бин существует на протяжении временижизни представления JSF (пока страница показывается).
212
@SessionScoped: бин будет доступен на протяжении всей HTTP сессии.
213
@CustomScoped: бин будет жить столько, сколько он будет находится в Map, котораясоздается для контроля времени жизни бинов.
214
@RequestScoped: бин существует на время жизни запроса-ответа (HTTP requestresponse).
215
216 1 Александр Александров
h3. Какие существую способы объявить класс управляемым бином JSF?
217
218 2 Александр Александров
Для объявлении класса управляемым бином используется аннотация
219
220
<pre>
221
@ManagedBean(name ="beanName", eager = "true\false")
222
</pre>
223
224
Другим способом объявить управляемый бин - это указать его в faces-config.xml:
225
226
{{dmsf_image(302)}}
227
228 1 Александр Александров
h3. Как используются атрибуты name и eager в Managed Bean?
229
230 2 Александр Александров
name: указывает уникальное имя класса (бина) в JSF. Если имя не указано, то имя совпадает с именем класса где первая буква в нижнем регистре.
231
eager: указывает на время создания бина. Если стоит true, то бин будет создан на старте приложения, если false, то бин будет создан при первом запросе к нему.
232
233 1 Александр Александров
h3. Какие теги для валидации существуют в JSF?
234 2 Александр Александров
235
f:validateLength: проверяет длину строки,
236
f:validateLongRange: проверка числового диапазона,
237
f:validateDoubleRange: проверка диапазона для типов float, double,
238
f:validateRegex: проверка значения согласно регулярному выражению.
239 1 Александр Александров
240
h3. Какие преимущества использования JSF Framework?
241
242 3 Александр Александров
Отделение бизнес логики от представления.
243
244
* Управление состоянием пользовательского интерфейса UI с помощью нескольких запросов к серверу.
245
* Поддерживается реализация собственных компонентов.
246
* Легкая передача данных между различными компонентами.
247
* JSF является стандартом JEE, что дает уверенность в работе заявленных функций.
248
249
Существует множество сторонних библиотек для JSF, например библиотека
250
компонентов PrimeFaces.
251
252 1 Александр Александров
h3. Какие различные теги JSF используются для конвертации?
253
254 3 Александр Александров
f:convertNumber: используется для преобразования строки в число.
255
f:convertDateTime: используется для преобразования строки в формат даты
256
257 1 Александр Александров
h3. Перечислите преимущества использования языка выражений (expression language)?
258
259 3 Александр Александров
* Арифметические, логические, реляционные операции могут быть использованы в языке выражений.
260
* Автоматическое преобразование типов.
261
* Показывает пустые или пропущенные значения как пустые строки вместо NullPointerException.
262
* Обеспечивает легкий доступ к предопределенным объектам, таким как запрос (request).
263
264 1 Александр Александров
h3. Поясните название backing bean.
265
266 3 Александр Александров
Backing Bean - специальный JavaBean (java класс), который собирает значения из компонентов, реагирует на события, взаимодействует с бизнес-логикой. Связан с каждым компонентом. Их может быть несколько и бин не является необязательным для UI компонента, а просто использует его. Backing bean содержит поля, которые будут заполняться из компонента (занесет значения введенные пользователем). JSF компонент не будет работать с Java классами и с чем-то другим, кроме Backing bean.
267
268 1 Александр Александров
h3. Какие стандартные библиотеки тегов JSF вы знаете?
269
270 3 Александр Александров
JSF Core Tags library и JSF HTML tags library. Задать пространство имен в xhtml странице можно следующим образом:
271
272
{{dmsf_image(303)}}
273
274
Затем с помощью указанных префиксов можно задавать какие-либо компоненты, например <h:form>, <c:validator> и т.д.
275
276 1 Александр Александров
h3. Какие основные функции выполняет метод в backing bean?
277
278 3 Александр Александров
* Проверяет данные компонента
279
* Обрабатывает события компонента
280
* Выполняет обработку запроса для определения к какой следующей странице необходимо навигироваться.
281
282 1 Александр Александров
h3. Каковы различные реализации JSF API вы знаете?
283
284 3 Александр Александров
* ADF Faces: реализация JSF стандарта компанией Oracle.
285
* Reference Implementation (RI): от Sun Microsystems.
286
* Primefaces: мощная библиотека компонентов JSF с поддержкой Ajax и JavaScript.
287
288 1 Александр Александров
h3. Объясните архитектуру JSF.
289
290 3 Александр Александров
JSF основывается на шаблоне проектирования MVC, что означает отделение бизнес логики от представлений. Приложение JSF содержит:
291
292
* UI компоненты, которые представляют состояния объектов на сервере.
293
* Классы-помощники на стороне сервера.
294
* Validators, event handlers и navigation handlers.
295
* Конфигурацию приложения и используемых ресурсов.
296
* Компоненты JavaBeans, которые используются как модель с необходимой функциональностью и информацией.
297
* Собственные библиотеки тегов для работы с event handlers и validators.
298
* Собственные библиотеки тегов для работы с графическими компонентами.
299
300
Ниже представлена схема JSF архитектуры:
301
302
{{dmsf_image(304)}}
303
304 1 Александр Александров
h3. Как различные компоненты рендерятся на JSF странице?
305
306 3 Александр Александров
Компоненты JSF отображаются на xhtml странице, включающую библиотеки тегов вроде jsf core, html, facelets tags.
307
308 1 Александр Александров
h3. Может JSF содержать несколько файлов конфигурации?
309
310 3 Александр Александров
Да, может. Их необходимо указать в web.xml.
311
312
{{dmsf_image(305)}}
313
314 1 Александр Александров
h3. Чем различается понятия backing bean и managed bean?
315
316 3 Александр Александров
Вообще на данный момент существует мнение, что эти понятия не следует различать (например так делает spring). Но если нужно как-то ответить по другому, то:
317
318
* backing bean должны определяться в request scoped. Backing bean связан с формой.
319
* Managed bean может определяться в request, session, application scopes. Этот тип
320
* бинов регистрируется в контексте приложения JSF и может быть вызван или создан в любое время и месте. Управляемые бины работают с графическими компонентами JSF.
321
322 1 Александр Александров
h3. Как отобразить сообщения об ошибках в JSF?
323
324 3 Александр Александров
Отображать какие либо системные ошибки можно с помощью тега <h:messages>, который может ссылаться на какой-либо графический компонент с помощью атрибута for.
325
326 1 Александр Александров
h3. Объясните назначение тега selectOne menu в JSF.
327
328 3 Александр Александров
Компонент selectOneMenu позволяет выбрать одно из списка значений. Компонент может выглядеть как list box, radio buttons или как меню.
329
330 1 Александр Александров
h3. Объясните в чем разница между атрибутами immediate и rendered?
331
332 3 Александр Александров
Атрибут immediate при значении true позволяет пропускать некоторые фазы жизненного цикла JSF. Например при нажатии на кнопку submit и необходимости
333
подтверждения формы будет пропущена валидация и преобразования. Данные, например, компонента inputTextField не будут отправлены в модель. В общем представление не достучится до своей модели и будет выполнены команды на кнопке с атрибутом immediate=’true’. Атрибут rendered указывает на необходимость создания (отрисовки) компонента на представлении. Этот атрибут может быть задан с помощью логического выражения.
334
335 1 Александр Александров
h3. Какие два способа связывания поддерживается JSF?
336
337 3 Александр Александров
* Связывание значения компонента с свойством в бине или внешним ресурсом.
338
* Связывание экземпляра компонента с свойством в бине.
339
340 1 Александр Александров
h3. Какая минимальная конфигурация необходима для JSF приложения?
341
342 3 Александр Александров
Необходимо настроить как минимум два файла конфигурации:
343
344
* web.xml - основной файл конфигурации веб приложения. Содержит детали развертывания, конфигурации приложения и обработчиков JSF.
345
* faces-config.xml - предоставляет настройки приложения, управляемых бинов, навигации, конвертеров, валидаторов.
346
347 1 Александр Александров
h3. Что означает navigation rule в JSF?
348
349 3 Александр Александров
Navigation rule описывает правила навигации в приложении.
350
351
{{dmsf_image(306)}}
352
353 1 Александр Александров
h3. Расскажите о назначение тегов converter в JSF.
354
355 3 Александр Александров
Использование тега конвертера в компоненте позволяет преобразовать данные в необходимый вид. Например, в теге <h:outpuText> можно задать конвертер, который будет обрезать слишком длинную строку:
356
357
{{dmsf_image(307)}}
358
359 1 Александр Александров
h3. Перечислите преимущества таблицы данных в JSF.
360
361 3 Александр Александров
Использование компонента таблицы в JSF предоставляет широкие возможности для работы с коллекциями или массивами и отображения их содержимого в табличном виде. Поддерживается итерация, предоставляются возможности по преобразованию данных в необходимом виде и многое другое.
362
363 1 Александр Александров
h3. Как реализовать интернационализацию (локализацию) (i18n) в JSF?
364
365 3 Александр Александров
Существуют различные способы реализации локализации в JSF, как стандартными методами, так и с помощью других фреймворков (например Spring). Главное значение локализации в JSF - отсутствие захардкоренных значений компонентов, текстовых данных и др. в коде. Необходимо задать свойство и связать его с помощью resource bundle файлом, в котором будет храниться набор значений для каждого языка (локали).
366
367 1 Александр Александров
h3. Какая модель рендеринга применяется в JSF?
368
369 3 Александр Александров
Архитектура рендеринга JavaServer Faces основана на компонентах. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется.
370
371 1 Александр Александров
h3. Что такое render kit?
372
373 3 Александр Александров
Render kit определяет набор компонентов и классов, которые подходят для отображения конкретному пользователю. Например <f:view renderKitId="PRIMEFACES_MOBILE"/> означает использование мобильного набора компонентов библиотеки Primefaces.
374
375 1 Александр Александров
h3. Что такое view object?
376
377 3 Александр Александров
View object используется специально для представления, но определяется за ее пределами. Он содержит информацию, которую необходимо отобразить в представлении, а так же логику валидации, обработчики событий и определяет взаимодействие с кодом бизнес логики.
378
379 1 Александр Александров
h3. Что подразумевается под Bean Scope?
380
381 3 Александр Александров
Bean scope - механизм связывания бинов и других объектов для возможности доступа к ним из различных компонентов веб приложения.
382
383 1 Александр Александров
h3. В чем разница между JSF-1 и JSF-2?
384
385 3 Александр Александров
JSF 1 не поддерживает Ajax, аннотации, применения шаблонов и вообще достаточно кривой в плане стабильности. Можно отказаться от xml файла при использовании аннотаций в коде.
386 1 Александр Александров
387 3 Александр Александров
h3. Может ли отсутствовать faces-config.xml у JSF приложения?
388
389
Можно отказаться от xml файла при использовании аннотаций в коде.
390
391 1 Александр Александров
h3. Сравните JSF и Spring Framework.
392
393 3 Александр Александров
Spring использует Inversion of Control (IoC) и Dependency Injection (DI), а JSF нет. Spring состоит из множества различных модулей, таких как Spring Data, Security, MVC и много других отлично взаимодействующих частей. Это помогает создавать большие приложения с меньшими затратами, в то время как JSF, скорее всего, потребует больше кодирования для многих необходимых функций. Использование DI в спринг позволяет внедрять POJO классы, в то время как JSF может работать только с JEE архитектурой.
394
395 1 Александр Александров
h3. Можем ли мы интегрировать JSF с другими популярными фреймворками вроде Spring, Hibernate и т.д.?
396 3 Александр Александров
397
Да, это возможно со всеми популярными фреймворками. Обычно конфигурация приложения для совместной работы JSF, Spring, Hibernate и т.д. не сложная, но из-за объема необходимого кода здесь они приводится не будут. Смотрите документацию для необходимого фреймворка.
Go to top