Mar*_*Koh 0 javascript jsp jstl
我有一个如下所示的代码:
在AnalyzeUserClient.jsp中:
<c:set var="arrayList"><%= (ArrayList<String>)request.getSession().getAttribute("arrayList") %></c:set>
var sessionId = [];
<c:forEach items=${arrayList} var="id">
sessionId.push("${id}"); // add them one at a time, assuming string values
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
但是,这一行:
sessionId.push("${id}");
Run Code Online (Sandbox Code Playgroud)
似乎没有将值传递给数组"sessionId"(我在浏览器上查看了源代码).所以问题是,我该怎么做才能将值传递给数组?
编辑:我刚刚意识到存在一些问题,因为JSTL是服务器端而JavaScript是客户端.所以它有解决方法吗?
不要混用EL和scriptlet.实际上,完全忘掉了scriptlet:
var sessionId = [];
<c:forEach items="${sessionScope.arrayList}" var="id">
sessionId.push("${id}");
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
请注意,如果其中一个ID恰好包含双引号,则会生成无效的JavaScript.因此,您最好在控制器之前使用JavaScript来转义ID.我建议采用一种完全不同的方法:将ID列表序列化到控制器中的JSON字符串,并将此JSON字符串存储在request属性中.JSP页面只需要
var sessionId = ${jsonEncodedSessionIds};
Run Code Online (Sandbox Code Playgroud)
这将转换为以下生成的代码:
var sessionId = ["id1", "id2"];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10594 次 |
最近记录: |