我用js封装的json文本怎么才能通过EL表达式将里面的 ...

我用js封装的json文本怎么才能通过EL表达式将里面的 ...,第1张

一,js 通过ajax请求请求后台,然后后台通过writer 直接写回浏览器。 *** 作如下:responsesetContentType("application/json;charset=utf-8");responsegetWriter()write(jsonStr);//json格式的字符串此时js接收到的数据就是js的JSON对象了二, 如果js中拿到的是json格式的字符串,可以通过 eval('(' + text + ')');来转换为json字符串三,如果你想用el表达式,那就在reqeust中放置你需要的数据对象,然后再jsp中就可以通过el表达式来进行填充了;例如,你在后台reqeustsetAttribute('info',map);//将map放入request中转向前台jsp时,就可以用${infokey}来显示对应的值了

el毕竟是服务器端的脚本,怎么可能和客户端脚本混用呢?
执行过程是服务器先解析了服务器端脚本后,结果返回到客户端,由浏览器执行返回的结果,这个两个步骤,不能混合搭配使用的。
我觉得有两种做法:
一种是你说的,用字符串,然后客户端拆分再 *** 作。
另一种是用el循环,输出的东西是客户端脚本的数组 *** 作
var aaa=new Array();
<c:forEach items="${reportName}" var="mm">
aaapush("${mm}");
</foreach>

然后 *** 作aaa
两种方法大同小异

两种情况
1 JS代码在JSP页面中, 这可以直接使用EL表达式 如:
[html] view plain copy print
<script type="text/javascript">
$(function () {
new BacklogOverview("${paramalert}");
});
</script>
2JS代码是单独的js 文件, 通过引入到 JSP中来这时候可通过提前定义JS变量的形式的解决,如:
[html] view plain copy print
<c:set var="contextPath" value="${pageContextrequestcontextPath}" scope="application"/>
<script>
<%--JS gloable varilible--%>
var contextPath = "${contextPath}";
</script>
在JSP页面上定义JS变量 contextPath
这样在之后引入的JS文件中就可以使用contextPath变量了
[html] view plain copy print
//Image setting
configfilebrowserImageUploadUrl = contextPath + "/ckeditor/uploadhtm";

js是客户端执行,el是在服务端执行,而服务端比客户端先执行,所以你不能用js来改变已经执行的el表达式的值,但是却可以用el来给js初始化传值,这和jsp脚本是一样的效果,但是如果js脚本不是在jsp页面里而是在单独的js文件里,这时用el初始传值是不起作用的,但你可以通过windowonload()来得到el的值再传送给js文件里的方法进行变量初始化

使用函数fn:

${fn:substringAfter(pagemapCONTENT,"标题")} //取 标题 后边的内容

更多用法可见:>1、在原JSP页面中将这些值封装进hidden域,然后传给js文件
比较直接的一种做法,但在后期维护时候可能会引起歧义(例如过一段时间后看JSP页面时候不知道这些hidden是干嘛的了)
2、我认为比较好的一种方式,在JSP页面中先声明一个<script></script>,在其中将你要传递的EL表达式作为全局变量写入,然后再导入外部JS代码

首先纠正,js里不能使用EL表达式。EL表达式在服务器端执行,输出表达式结果到JSP页面。而js是在客户端执行的。 你的问题在于EL表达式是直接输出文本,并不知道上下文环境是HTML还是JS或是其他什么。这样就会导致输出的文本有时候语法不正确。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13409986.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存