jsp 命令<%=%> 在 Javascript 语句中使用时被忽略,在 taglib 标记语句内

jsp command <%=%> being ignored when it is used in a Javascript statement, inside a taglib tag statement?

本文关键字:语句 taglib 命令 Javascript jsp      更新时间:2023-09-26

一个例子会更清楚地说明这一点!

该 jsp 文件...

<%@ taglib prefix ="jam" uri= "http://jam.tld" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%>
<%
     String targetPage = true ? "toast" : "bread"; 
%>
<jam:text onmousedown="movePage('<%=targetPage%>');" id="<%=targetPage%>"><%=targetPage%></jam:text>

注意 - 标签库不是我的,我无法控制它。(它也不是真正被称为果酱:)。

然后,这将创建此 HTML...

<td onmousedown="movePage('<%=targetpage%>;');" id="toast">toast</td>

正如你所看到的:<%=targetPage%> 只在非 javascript 位中被替换/解析?

编译后的 jsp 文件如下所示:

jspx_th_jam_005ftext_005f2.setOnmousedown("movepage('<%=targetpage%>')");

有人知道发生了什么,或者如何解决它吗?为什么 <%=%> 标记在 JavaScript 语句中被忽略?:)

这里有一个作弊解决方案,你不需要那个JS调用中的JSP标签。事实上,这样更整洁

<jam:text onmousedown="movePage(this.id);" id="<%=targetPage%>"><%=targetPage%></jam:text>