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

时间:2015-02-26 14:19:57

标签: java javascript jsp servlets el

我试图将管理页面连接到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时,我是一个全新手。

这可以工作并打印出警告说&#34;一些文字&#34;:

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

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

1 个答案:

答案 0 :(得分:4)

似乎问题是我将自定义消息字符串中的换行符发布为\n,但java将它们解析为自己的换行符,而不是仅将\n发送到java脚本,结果在某种形式的无效字符串中,它不会解析。

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

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

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