Struts 1 - Как отобразить ActionMessages

Я отображаюсь ActionMessages через a JSP файл следующей командой:

<logic:messagesPresent message="true">
    <ul id="messsages">
        <html:messages id="msg" message="true">
            <li><bean:write name="msg"/> </li>
        </html:messages>
    </ul>
</logic:messagesPresent>

Теперь я хочу отобразить только выбранные сообщения. Как я могу указать который сообщение отобразиться?

Обновленный

На самом деле я имею два ActionMessages объект - messages и warnings. Теперь я хочу отобразить их обоих на отдельном JSP страница... Одна страница для показа messages и другой для warnings.

Таким образом, как указать в JSP страница то, что обменивается сообщениями для отображения?



Обновленный - 2

Теперь, я нашел странную вещь.

saveMessages(request, messages);
saveMessages(request, warnings);

Когда я написал вышеупомянутый код, только warnings работал. Когда я инвертировал порядок вышеупомянутых двух операторов, затем только messages работал.

Кажется, что мы можем добавить только один ActionMessages объект в запросе. Если это корректно, то, как отобразить сообщения в два ActionMessages объекты отдельно.

8
задан Buhake Sindi 23 January 2013 в 17:41
поделиться

2 ответа

Простой,

Разделите свои сообщения и свои предупреждения : в действии struts сохраните сообщения и предупреждения следующим образом:

//For messages
saveMessages(request, messages);

//For warnings
saveErrors(request, warnings);

Для их отображения:

<logic:messagesPresent message="true">
    <html:messages id="aMsg" message="true">
        <logic:present name="aMsg">
            <!-- Messages -->
            <div class="messages">
                <bean:write name="aMsg" filter="false" />
            </div>
        </logic:present>
    </html:messages>
</logic:messagesPresent>

<logic:messagesPresent message="false">
    <html:messages id="aMsg" message="false">
        <logic:present name="aMsg">
            <!-- Warnings-->
            <div class="warnings">
                <bean:write name="aMsg" filter="false" />
            </div>
        </logic:present>
    </html:messages>
</logic:messagesPresent>

Отображаются все сообщения (путем установки message = "true" )

<html:messages id="aMsg" message="true">

Отображаются все предупреждения (установив message = "false" )

<html:messages id="aMsg" message="false">

ОБНОВЛЕНИЕ Видя, что вы сейчас очищаете свой вопрос, самый простой способ - это сделать.

Иметь определенный флаг, который будет указывать, хочет ли пользователь просматривать сообщения или предупреждения . В Struts Action запросите флаг и проверьте, выбрал ли пользователь просмотр сообщений или предупреждений. Затем вы сохраняете либо предупреждения , либо сообщения в зависимости от выбора и отображения пользователя. та же страница (как вы писали выше) для отображения сообщений.

Причина в том, что Struts (при сохранении ваших сообщений или ошибок) сохраняет его по запросу или сеансу со следующей константой.

  • Globals.MESSAGE_KEY (присваивается, когда вы выполняете saveMessages (запрос, сообщения) )
  • Globals.ERROR_KEY (присваивается, когда вы выполняете saveErrors (запрос, ошибки) )

при использовании , Struts ищет MESSAGE_KEY (если message = true) или ERROR_KEY ( если message = false) или оба (если message = none). Вы не можете этого контролировать.

В комментариях TLD говорится:

По умолчанию тег будет извлекать компонент , который будет перебираться из постоянной строки Globals.ERROR_KEY,
, но если для этого атрибута установлено значение "истина" , компонент будет извлечен из постоянной строки Globals.MESSAGE_KEY. Также, если он установлен значение true, любое значение , присвоенное атрибуту имени , будет проигнорировано.

Вы также можете написать скриптлет, чтобы проверить, существуют ли эти ключи, а затем через ключ для отображения сообщений (но это будет слишком много работы).

Надеюсь, это поможет.

17
ответ дан 5 December 2019 в 08:23
поделиться

Вместо использования атрибута message в тегах messagesPresent и messages, вы можете использовать атрибут name для указания имени объекта ActionMessages, находящегося в области видимости страницы, запроса, сессии или приложения.

3
ответ дан 5 December 2019 в 08:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: