Когда использовать f: view и f: subview - PullRequest
44 голосов
/ 16 января 2012

Я не уверен, каковы преимущества использования <f:view> и <f:subview>.Я заметил, что можно писать страницы JSF без их использования.

Каковы преимущества использования этих тегов?

1 Ответ

73 голосов
/ 16 января 2012

<е: вид>

<f:view> полезен, только если вы хотите явно указать / переопределить любой из доступных атрибутов, таких как locale, encoding, contentType и т. Д., Или хотите присоединить некоторую фазу слушатели. Э.Г.

<f:view locale="#{user.locale}" encoding="UTF-8" contentType="text/html">

Если вы не укажете его, то вместо этого будут использоваться только нормальные значения JSF по умолчанию, соответственно UIViewRoot#getLocale(), UTF-8 и самое близкое совпадение Accept заголовка запроса. Следует отметить, что наиболее близкое совпадение заголовка запроса Accept не всегда является полностью правильным. Иногда это приводит к application/xhtml+xml из-за присутствия расширения .xhtml в URL в случае, если Facelets и веб-браузер не настроены для его интерпретации как text/html по умолчанию (как MSIE). Вы действительно хотели бы избежать этого неправильного типа контента, явно указав для него text/html.

Обратите внимание, что не имеет значения, где вы поместите его в шаблон. Вы даже можете поместить его в шаблон клиента как непосредственный потомок <ui:define>. Тем не менее, каноническое место является непосредственным потомком <html> и, таким образом, охватывает <h:head> и <h:body>. Это также способ, которым это делается в устаревшей JSP, где на самом деле требуется . В Facelets это необязательно и учитывается как метаданные.

Смотри также:


<е: подтаблицы>

<f:subview> создаст другой контекст контейнера именования. Это особенно полезно, когда вы хотите повторно использовать включаемый файл, который, в свою очередь, содержит фиксированные идентификаторы компонентов более одного раза в одном корне представления, в противном случае вы получите повторяющиеся ошибки идентификатора компонента. Однако, поскольку JSF 2.0 такой включаемый файл может быть составным компонентом, который сам по себе уже является контейнером имен.

Если вы не укажете его, то не повредит, если вы не используете компонент с одним и тем же идентификатором несколько раз в представлении.

Смотри также:

...