Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts 1-如何显示ActionMessages_Java_Struts_Struts 1 - Fatal编程技术网

Java Struts 1-如何显示ActionMessages

Java Struts 1-如何显示ActionMessages,java,struts,struts-1,Java,Struts,Struts 1,我通过以下命令通过JSP文件显示ActionMessages: <logic:messagesPresent message="true"> <ul id="messsages"> <html:messages id="msg" message="true"> <li><bean:write name="m

我通过以下命令通过
JSP
文件显示
ActionMessage
s:

<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
对象。如果正确,那么如何在两个
ActionMessages
对象中分别显示消息。

您可以使用
messagesPresent
messages
标记上的
message
属性来指定您在页面、请求和,会话或应用范围。

简单

消息
警告分开:在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=“false”


更新看到您现在正在澄清您的问题,最简单的方法就是这样做

有一个特定的标志,指示用户是否要查看
消息
警告
。在Struts操作中,请求标志并检查用户是否选择查看消息或警告。 然后,根据用户选择保存
警告
消息
,并显示相同的页面(如上所述)以显示消息

原因是,Struts(在存储消息或错误时)在请求或会话时使用以下常量存储它

  • Globals.MESSAGE_键(在执行
    保存消息(请求,消息)
    时指定)
  • Globals.ERROR\u键(在执行
    保存错误(请求,错误)
    时指定)
当使用
时,Struts搜索
消息键(如果消息为true)或
错误键(如果消息为false)或两者(如果消息为none)。你无法控制

TLD注释说明:

默认情况下,标记将检索 它将从 Globals.ERROR\u键常量字符串,
但如果此属性设置为“true” 该bean将从 Globals.MESSAGE_键常量字符串。 此外,如果设置为“真”,则任何 指定给“名称”属性的值 将被忽略

您还可以编写scriptlet来检查这些键是否存在,然后通过键显示消息(但这将是太多的工作)


希望这有帮助。

我也可以从ActionMessages对象中选择特定消息吗?您可以使用
属性
属性按属性选择特定消息。除此之外,我认为您必须自己迭代ActionMessages。Globals.XXX_键常量在请求或会话时存储一次。因此,你觉得你的方法很奇怪。
<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>
<html:messages id="aMsg" message="true">
<html:messages id="aMsg" message="false">