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

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

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

1 ответов


на <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 и webbrowser не настроен для интерпретации его как text/html по умолчанию (например, MSIE). Вы действительно хотите избежать этого неправильного типа контента, явно установив его в text/html.

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

Читайте также:


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

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

Читайте также: