Я отображаюсь ActionMessage
s через 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
страница то, что обменивается сообщениями для отображения?
Теперь, я нашел странную вещь.
saveMessages(request, messages);
saveMessages(request, warnings);
Когда я написал вышеупомянутый код, только warnings
работал. Когда я инвертировал порядок вышеупомянутых двух операторов, затем только messages
работал.
Кажется, что мы можем добавить только один ActionMessages
объект в запросе. Если это корректно, то, как отобразить сообщения в два ActionMessages
объекты отдельно.
Простой,
Разделите свои сообщения
и свои предупреждения
: в действии 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 (при сохранении ваших сообщений или ошибок) сохраняет его по запросу или сеансу со следующей константой.
saveMessages (запрос, сообщения)
) saveErrors (запрос, ошибки)
) при использовании
, Struts ищет MESSAGE_KEY
(если message = true) или ERROR_KEY
( если message = false) или оба (если message = none). Вы не можете этого контролировать.
В комментариях TLD говорится:
По умолчанию тег будет извлекать компонент , который будет перебираться из постоянной строки Globals.ERROR_KEY,
, но если для этого атрибута установлено значение "истина" , компонент будет извлечен из постоянной строки Globals.MESSAGE_KEY. Также, если он установлен значение true, любое значение , присвоенное атрибуту имени , будет проигнорировано.
Вы также можете написать скриптлет, чтобы проверить, существуют ли эти ключи, а затем
через ключ для отображения сообщений (но это будет слишком много работы).
Надеюсь, это поможет.
Вместо использования атрибута message
в тегах messagesPresent
и messages
, вы можете использовать атрибут name
для указания имени объекта ActionMessages, находящегося в области видимости страницы, запроса, сессии или приложения.