Как динамически передавать аргументы сообщениям в комплекте ресурсов - PullRequest
5 голосов
/ 02 августа 2010

Я хотел бы получить информацию о сообщении из пакета i18n (messages.properties в seam), но я не уверен, как динамически передать переменную объявить / передать jobCount в моем xhtml

Существующий код выглядит следующим образом.

<s:decorate template="/layout/panel-name.xhtml">
    <ui:define name="label">User has been assigned #{jobCount} jobs</ui:define>
</s:decorate>

Ответы [ 2 ]

11 голосов
/ 03 августа 2010

Я думаю, что это должно работать:

<h:outputFormat value="#{msg.yourMessage}">
  <f:param value="#{myBean.jobCount}" />
</h:outputFormat>
2 голосов
/ 02 августа 2010

Я нашел этот фрагмент кода:

#{interpolator.interpolate(messages['myMessage'],jobCount)}

Я думаю, это то, что вы ищете. Messages and placeHolders

В противном случае вы можете использовать конкатенацию строк (безобразно), если это статическое сообщение:

<s:decorate template="/layout/panel-name.xhtml">
    <ui:define name="label">#{messages['myMessage']} #{jobCount}</ui:define>
</s:decorate>

Или если это динамическое сообщение, и вы используетеh: message

Используйте этот синтаксис в свойствах сообщения:

myMessage = Пользователю назначено {1} заданий

А затем при созданиисообщение в бобе

@Name("myBean") 
public class Bean {
    @In(create = true) FacesMessages facesMessages;
    @In Map messages;

    public String action() {
         // Action here
         facesMessages.add(messages.get("myMessage"), jobCount);
    }
}
...