Ответы на вопросы на собеседование Java Server Faces (JSF) (часть 2).
- Какие преимущества использования JSF Framework?
• Отделение бизнес логики от представления.
• Управление состоянием пользовательского интерфейса UI с помощью нескольких запросов к серверу.
• Поддерживается реализация собственных компонентов.
• Легкая передача данных между различными компонентами.
• JSF является стандартом JEE, что дает уверенность в работе заявленных функций. Существует множество сторонних библиотек для JSF, например библиотека компонентов PrimeFaces.
- Какие различные теги JSF используются для конвертации?
• f:convertNumber: используется для преобразования строки в число.
• CustomConverter: созданный пользователем конвертер JSF.
- Перечислите преимущества использования языка выражений (expression language)?
• Арифметические, логические, реляционные операции могут быть использованы в языке выражений.
• Автоматическое преобразование типов.
• Показывает пустые или пропущенные значения как пустые строки вместо NullPointerException.
• Обеспечивает легкий доступ к предопределенным объектам, таким как запрос (request).
- Поясните название backing bean.
Backing Bean - специальный JavaBean (java класс), который собирает значения из компонентов, реагирует на события, взаимодействует с бизнес-логикой. Связан с каждым компонентом. Их может быть несколько и бин не является необязательным для UI компонента, а просто использует его. Backing bean содержит поля, которые будут заполняться из компонента (занесет значения введенные пользователем). JSF компонент не будет работать с Java классами и с чем-то другим, кроме Backing bean.
- Какие стандартные библиотеки тегов JSF вы знаете?
JSF Core Tags library и JSF HTML tags library. Задать пространство имен в xhtml странице можно следующим образом:
Затем с помощью указанных префиксов можно задавать какие-либо компоненты, например <h:form>, <c:validator> и т.д..
- Какие основные функции выполняет метод в backing bean?
• Проверяет данные компонента
• Обрабатывает события компонента
• Выполняет обработку запроса для определения к какой следующей странице необходимо навигироваться.
- Каковы различные реализации JSF API?
• ADF Faces: реализация JSF стандарта компанией Oracle.
• Reference Implementation (RI): от Sun Microsystems.
• Apache MyFaces: open source реализация JavaServer Faces (JSF).
• Primefaces: мощная библиотека компонентов JSF с поддержкой Ajax и JavaScript.
- Объясните архитектуру JSF.
JSF основывается на шаблоне проектирования MVC, что означает отделение бизнес логики от представлений. Приложение JSF содержит:
- UI компоненты, которые представляют состояния объектов на сервере.
- Классы-помощники на стороне сервера.
- Validators, event handlers и navigation handlers.
- Конфигурацию приложения и используемых ресурсов.
- Компоненты JavaBeans, которые используются как модель с необходимой функциональностью и информацией.
- Собственные библиотеки тегов для работы с event handlers и validators.
- Собственные библиотеки тегов для работы с графическими компонентами.
- Как различные компоненты рендерятся на JSF странице?
Компоненты JSF отображаются на xhtml странице, включающую библиотеки тегов вроде jsf core, html, facelets tags.
- Может JSF содержать несколько файлов конфигурации?
Да, может. Их необходимо указать в web.xml.
- Чем различается понятия backing bean и managed bean?
Вообще на данный момент существует мнение, что эти понятия не следует различать (например так делает spring). Но если нужно как-то ответить по другому, то:
- backing bean должны определяться в request scoped. Backing bean связан с формой.
- Managed bean может определяться в request, session, application scopes. Этот тип бинов регистрируется в контексте приложения JSF и может быть вызван или создан в любое время и месте. Управляемые бины работают с графическими компонентами JSF.
- Как отобразить сообщения об ошибках в JSF?
Отображать какие либо системные ошибки можно с помощью тега <h:messages>, который может ссылаться на какой-либо графический компонент с помощью атрибута for.
- Объясните назначение тега selectOne menu в JSF.
Компонент selectOneMenu позволяет выбрать одно из списка значений. Компонент может выглядеть как list box, radio buttons или как меню.
- Объясните в чем разница между атрибутами immediate и rendered?
Атрибут immediate при значении true позволяет пропускать некоторые фазы жизненного цикла JSF. Например при нажатии на кнопку submit и необходимости подтверждения формы будет пропущена валидация и преобразования. Данные, например, компонента inputTextField не будут отправлены в модель. В общем представление не достучится до своей модели и будет выполнены команды на кнопке с атрибутом immediate=’true’.
Атрибут rendered указывает на необходимость создания (отрисовки) компонента на представлении. Этот атрибут может быть задан с помощью логического выражения.
- Какие два способа связывания поддерживается JSF?
Связывание значения компонента с свойством в бине или внешним ресурсом.
Связывание экземпляра компонента с свойством в бине.
- Какая минимальная конфигурация необходима для JSF приложения?
Необходимо настроить как минимум два файла конфигурации:
- web.xml - основной файл конфигурации веб приложения. Содержит детали развертывания, конфигурации приложения и обработчиков JSF.
- faces-config.xml - предоставляет настройки приложения, управляемых бинов, навигации, конвертеров, валидаторов.
- Что означает navigation rule в JSF?
Navigation rule описывает правила навигации в приложении.
- Расскажите о назначение тегов converter в JSF.
Использование тега конвертера в компоненте позволяет преобразовать данные в необходимый вид. Например, в теге <h:outpuText> можно задать конвертер, который будет обрезать слишком длинную строку:
- Перечислите преимущества таблицы данных в JSF.
Использование компонента таблицы в JSF предоставляет широкие возможности для работы с коллекциями или массивами и отображения их содержимого в табличном виде. Поддерживается итерация, предоставляются возможности по преобразованию данных в необходимом виде и многое другое.
- Как реализовать интернационализацию (локализацию) (i18n) в JSF?
Существуют различные способы реализации локализации в JSF, как стандартными методами, так и с помощью других фреймворков (например Spring). Главное значение локализации в JSF - отсутствие захардкоренных значений компонентов, текстовых данных и др. в коде. Необходимо задать свойство и связать его с помощью resource bundle файлом, в котором будет храниться набор значений для каждого языка (локали).
- Какая модель рендеринга применяется в JSF?
Архитектура рендеринга JavaServer Faces основана на компонентах. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется.
- Что такое render kit?
Render kit определяет набор компонентов и классов, которые подходят для отображения конкретному пользователю. Например <f:view renderKitId="PRIMEFACES_MOBILE"/> означает использование мобильного набора компонентов библиотеки Primefaces.
- Что такое view object?
View object используется специально для представления, но определяется за ее пределами. Он содержит информацию, которую необходимо отобразить в представлении, а так же логику валидации, обработчики событий и определяет взаимодействие с кодом бизнес логики.
- Что подразумевается под Bean Scope?
Bean scope - механизм связывания бинов и других объектов для возможности доступа к ним из различных компонентов веб приложения.
- В чем разница между JSF-1 и JSF-2?
JSF 1 не поддерживает Ajax, аннотации, применения шаблонов и вообще достаточно кривой в плане стабильности.
- Может ли отсутствовать faces-config.xml у JSF приложения?
Можно отказаться от xml файла при использовании аннотаций в коде.
- Сравните JSF и Spring Framework.
Spring использует Inversion of Control (IoC) и Dependency Injection (DI), а JSF нет.
Spring состоит из множества различных модулей, таких как Spring Data, Security, MVC и много других отлично взаимодействующих частей. Это помогает создавать большие приложения с меньшими затратами, в то время как JSF, скорее всего, потребует больше кодирования для многих необходимых функций.
Использование DI в спринг позволяет внедрять POJO классы, в то время как JSF может работать только с JEE архитектурой.
- Можем ли мы интегрировать JSF с другими популярными фреймворками вроде Spring, Hibernate и т.д.?
Да, это возможно со всеми популярными фреймворками. Обычно конфигурация приложения для совместной работы JSF, Spring, Hibernate и т.д. не сложная, но из-за объема необходимого кода здесь они приводится не будут. Смотрите документацию для необходимого фреймворка.
0 коментарі :
Отправить комментарий