Как получить сообщение с определенным ключом из <stripes: messages> из Stripes Framework - PullRequest
3 голосов
/ 02 июля 2011

Я хочу получить сообщение с определенным ключом из тега фреймворка Stripes.

В бине действия у меня есть это:

    switch (result) {
            case REG_ALREADY_REGISTERED:
                getContext().getMessages().add(new LocalizableMessage("consumer.already.registered"));
                redirect = getContext().getSourcePageResolution();
                break;

На странице JSP:

<stripes:messages key="consumer.already.registered"/>

но приведенный выше код не работает. Если я ставлю только "<stripes:messages/>", это показывает способ печати сообщений по умолчанию для полос. то есть с " ul li ". Я хочу, чтобы мои сообщения были в форме сообщений. Есть ли что-нибудь возможное с JSP, как показано ниже:

<c:if test="${not empty actionBean.context.messages}">
    <c:out value="${actionBean.context.messages......"/> //This is the place where I am unsure
</c:if>

1 Ответ

3 голосов
/ 02 июля 2011

В запрос на добавление функции добавлены дополнительные теги для отображения сообщений: http://www.stripesframework.org/jira/browse/STS-245.

Если вам не нравятся заголовки и нижние колонтитулы сообщений по умолчанию, вам просто нужно изменить их через свойства, как описано в документации: http://stripes.sourceforge.net/docs/current/taglib/stripes/messages.html. Это изменит верхние и нижние колонтитулы для всех ваших страниц. , хоть. Если вы хотите изменить их для одной конкретной страницы, AFAIK нет другого пути, чем сделать что-то вроде этого:

<c:if test="${not empty actionBean.context.messages}">
    <c:forEach var="message" items=${"actionBean.context.messages}">
        ${myFn:getMessageText(message, getPageContext.request.locale)}
    </c:forEach>
</c:if>

Где myFn:getMessageText будет функцией, определенной следующим образом:

public static String getMessageText(Message message, Locale locale) {
    return message.getMessage(locale);
}
...