Вопрос: Когда использовать f: view и f: subview


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

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


39


источник


Ответы:


<Е: вид>

<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> создаст другой контекст контейнера имен. Это особенно полезно, если вы хотите повторно использовать файл include, который, в свою очередь, содержит идентификаторы фиксированного компонента более одного раза в одном корневом каталоге, в противном случае вы получите дубликаты идентификаторов компонентов. Однако, поскольку JSF 2.0 такой файл включения может быть лучшим составным компонентом, который сам по себе является именованным контейнером.

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

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


64