У меня есть вариант использования, в котором я должен использовать пакет ресурсов для отображения различных текстов в пользовательском интерфейсе. Некоторые из этих записей набора ресурсов принимают параметры (, например. {0} ), для них я использую h :outputFormat, но иногда этого недостаточно.
например.
someMessage=Display this message with param {0}
в комплекте ресурсов.
Чтобы отобразить его на xhtml, я обычно делаю:
<h:outputFormat value="#{msg['someMessage']}"><f:param value="#{someBean.value}"/></h:outputFormat>
Это хорошо работает, когда это простой случай,но для более сложных вариантов использования этого недостаточно. Например, если я хочу, чтобы атрибут title ссылки commandLink использовал указанную выше запись пакета ресурсов:
<h:commandLink action="logout" title="#{msg['someMessage']}">
<f:param value="#{someBean.value}" />
<h:graphicImage library="images" name="image.png" />
</h:commandLink>
что не работает. Я также пробовал:
<h:commandLink action="logout">
<f:attribute name="title">
<h:outputFormat value="#{msg['someMessage']}"><f:param value="#{someBean.value}"/></h:outputFormat>
</f:attribute>
<h:graphicImage library="images" name="image.png" />
</h:commandLink>
что также не работает, так как атрибут f :не допускает детей.
Даже если есть способ обойти это (, например. используя компонент наведения из простых лиц ), есть и другие поля, для которых может потребоваться параметризованное сообщение.
Кто-нибудь знает способ использования MessageFormat, который принимает аргумент в поле значения, отличном от -компонента JSF?