Jquery 为什么可以拿到action请求之后的值栈中的值?
Question:
今天在一个jsp页面的脚本中看到了一个东西:
var mobileList = '${mobileList}'
这样子action返回之后就拿到了值栈中的mobileList。
Answer:
本来以为是jquery在页面加载完成之后,使用了一些手段进行解析出来了值栈中的值,这是一个错误的思考方向,查到了template plugin,但是项目又没引用这个插件。所以就很迷茫,最后请教同事,才明白。根据来说,这个问题的关键在于何时替换了变量和jsp template解析的作用域问题。
正解:
从action请求执行完毕之后,就会执行页面跳转,但是这时候还是jsp页面,所以struts会负责将其中的变量替换完毕,不管是页面部分还是jsp部分中的,替换完成之后会生成html,完成之后执行javascript.
Summary:
以前也想过这个问题,总觉得js的域和页面是分开的,不能像页面一样进行获取值。但是没有想过生成html的过程,是整个jsp或者其它模板页面的全部变量都会替换。