我有一个Action类,它使用addActionMessage();发送动作消息。

我想使用JavaScript警报框在JSP中显示该消息。

我尝试过

alert  ('<s:actionmessage/>');


但它显示unterminated string literal

最佳答案

<s:actionmessage/>标记generates an HTML如下所示:

<ul class="actionMessage">
    <li>
        <span>
            Your Message 1
        </span>
    </li>
    <li>
        <span>
            Your Message 2, and so on...
        </span>
    </li>
</ul>


这将使用无效的JS代码破坏您的JavaScript函数:

alert('<ul class="actionMessage">
        <li>
      ...
     ');


解决方案是使用<s:property/>而不是<s:actionmessage/>手动遍历您的消息,并自己构建输出:

<s:if test="actionMessages!=null && actionMessages.size > 0">
    <script>
        var actionMessages;
        <s:iterator value="actionMessages" >
            // Iterate the messages, and build the JS String
            actionMessages += '-' + '<s:property />' + '\n';
        </s:iterator>
        alert (actionMessages);
    </script>
</s:if>


还请记住将actionMessages中的单引号引起来。

10-08 08:26