我正在尝试创建一个连接到 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>
似乎没有什么效果。我可能错过了这里的语法,因为当涉及到 UI 时我完全是新手。
这可以工作并打印出一条警告,提示“一些文本”:
<c:if test="${not empty invalidConcertInputMessage}">
<script>
alert("some text");
</script>
</c:if>
请告诉我如何将自定义消息传递给警报。或者这有可能吗?
最佳答案
问题似乎是我将换行符作为 \n
发布到我的自定义消息字符串中,但 java 将它们解析为自己的换行符,而不是仅发送 \n
到 java 脚本,这导致它无法解析某种形式的无效字符串。
我通过将 servlet 发送的自定义字符串中的 \n 替换为
\n` 解决了该问题。
对于处于这种困境的其他人,这是我使用的语法:
<c:if test="${not empty invalidConcertInputMessage}">
<script>
var message = "${invalidConcertInputMessage}";
alert(message);
</script>
</c:if>
关于java - jSTL - 如何将表达式语言变量传递给 JavaScript 警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28744817/