Facelets: как передать значение ui: insert в качестве атрибута html? - PullRequest
8 голосов
/ 11 февраля 2009

Я пытаюсь выполнить небольшую настройку в среде Facelets / JSF. Я почти ничего не знаю, как все это сочетается.

У меня есть значение, определенное на разных страницах как "заголовок"

<ui:define name="title">PageUID_123</ui:define>

На другой странице я ссылаюсь на это:

<ui:insert name="title"/>

Я могу просто обернуть html-теги вокруг вставки, но мне нужно иметь возможность выводить значение title в качестве атрибута другого элемента. Моя конечная цель - сделать так, чтобы он отображался в формате html следующим образом:

<meta name="pageid" content="PageUID_123"/>

Если я попытаюсь вставить тег вставки в бит content = "", он выдаст ошибку разбора. Есть ли способ сделать это?

1 Ответ

6 голосов
/ 11 февраля 2009

Передо мной нет рабочей среды, но я считаю, что вы не хотите, чтобы вы использовали <ui:define>, но вместо этого вы хотите использовать <ui:param>, а затем использовать ${x} или #{x} (или забудь, что или если это имеет значение) вытащить их.

Итак, для вашего примера вы должны иметь:

<ui:param name="title" value="PageUID_123" />

А потом:

<meta name="pageid" content="${title}"/>

Меня беспокоит только то, что вы используете include, чтобы иметь красивые шаблоны, т.е.

шаблон:

<html>
    <head>
        <meta name="pageid" content="${title}"/>
    </head>
    <body>
        <ui:insert name="content" />
    </body>
</html>

Внутренняя страница:

<html xmlns="...so many">
    <ui:param name="title" value="PageUID_123" />
    <ui:define name="content">
        <!-- content goes here -->
    </ui:define>
</html>

И я действительно не знаю, полетит ли это ...

Редактировать: Возможно, вы захотите попробовать ${title} или #{title} просто для того, чтобы ударить, как вы делаете это сейчас, это может быть просто работа.

...