简单的,
messages
将 your和 your分开warnings
:在您的 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>
这显示所有messages
(通过设置message="true"
)
<html:messages id="aMsg" message="true">
这显示所有warnings
(通过设置message="false"
)
<html:messages id="aMsg" message="false">
更新看到您现在正在清除您的问题,最简单的方法就是这样做。
有一个特定的标志来指示用户是想查看messages
还是warnings
. 在 Struts Action 上,请求标志并检查用户是否选择查看消息或警告。然后,您保存warnings
或messages
基于用户选择并显示相同的页面(如您在上面写的)以显示消息。
原因是这样的,Struts(在存储消息或错误时)将其存储在请求或会话中,并具有以下常量。
- Globals.MESSAGE_KEY (当你这样做时分配
saveMessages(request, messages)
)
- Globals.ERROR_KEY (当你这样做时分配
saveErrors(request, errors)
)
当使用 时<logic:messagesPresent message="true">
,Struts 搜索MESSAGE_KEY
(if message=true) 或ERROR_KEY
(if message=false) 或两者 (if message=none)。你无法控制它。
<html:messages />
TLD 评论指出:
默认情况下,该标签将从 Globals.ERROR_KEY 常量字符串中检索将迭代的 bean,
但如果此属性设置为“true”,则将从 Globals.MESSAGE_KEY 常量字符串中检索 bean。此外,如果将其设置为“true”,则分配给 name 属性的任何值都将被忽略。
您还可以编写scriptlet 来检查这些键是否存在,然后<logic:iterate />
通过键来显示消息(但这将是太多的工作)。
希望这可以帮助。