jstl-如何将表达式语言变量传递给javascript警报

jstl - how do i pass an expression language variable to a javascript alert?

本文关键字:javascript 警报 变量 语言 表达式 jstl-      更新时间:2024-06-11

我正在尝试创建一个连接到servlet的管理页面,在那里我可以将一些元素插入数据库。这是一个音乐会门票预订网站的演示,我使用一个表单输入数据,并使用servlet进行验证

如果servlet在表单的一个或多个字段中发现无效数据,它会以名为mismatchOut的格式化字符串的形式返回一条自定义消息——每行一条无效消息,例如:

Concert date must be in yyyy-mm-dd format!
start time must be in hh:mm:ss format!

我在我的jsp中传递为:

<c:set var="invalidConcertInputMessage" value="${mismatchOut}" scope="page" />

我想做的是将此消息传递给一个警报,该警报将向管理员用户显示该消息。

我试过:

<c:if test="${not empty invalidConcertInputMessage}">
    <script>
        alert("${invalidConcertInputMessage}");
    </script>
</c:if>

<c:if test="${not empty invalidConcertInputMessage}">
    <script>
        alert(${invalidConcertInputMessage});
    </script>
</c:if>

<c:if test="${not empty invalidConcertInputMessage}">
    <script>
        alert(<c:out value="${invalidConcertInputMessage}");
    </script>
</c:if>

<c:if test="${not empty invalidConcertInputMessage}">
    <script>
        alert("<c:out value="${invalidConcertInputMessage}" />");
    </script>
</c:if>

和:

<c:if test="${not empty invalidConcertInputMessage}">
    <script>
        alert('<c:out value="${invalidConcertInputMessage}" />');
    </script>
</c:if>

似乎什么都不起作用。我可能错过了这里的sintax,因为当谈到tu UI时,我完全是个新手。

这是有效的,并打印出一个警报,上面写着"一些文本":

<c:if test="${not empty invalidConcertInputMessage}">
    <script>
        alert("some text");
    </script>
</c:if>

请告诉我如何将自定义消息传递给警报。或者这可能吗?

问题似乎是我将换行符作为'n发布到我的自定义消息字符串中,但java将它们解析为自己的换行符,而不是将'n发送到java脚本,这导致了某种形式的无效字符串无法解析。

我通过替换servlet发送的自定义字符串中的'n with''n`解决了这个问题。

对于其他陷入这种困境的人来说,这就是我使用的语法:

<c:if test="${not empty invalidConcertInputMessage}">
    <script>
        var message = "${invalidConcertInputMessage}";
        alert(message);
    </script>
</c:if>