项目中jsp上经常有如下代码 :<script>
var producerPatch = '<%= request.getParameter("producerPatch")%>';
var userId = '<%= request.getParameter("userId")%>';
var isMuni = '<%= request.getParameter("isMuni")%>';
</script>
<script src="js/GridPortlet.js"></script>
<script src="js/DocumentPortlet.js"></script>
<script src="js/CommonPortlet.js"></script>
<script src="js/FxGridPortlet.js"></script>
导入的这些js(GridPortlet.js DocumentPortlet.js CommonPortlet.js FxGridPortlet.js)中都需要用到 上面三个变量 但是如果你查这些js修改code的时候就不能在本文件里面找到这些变量,维护起来非常麻烦(特别是还不是自己写的代码) 因为时常为了找这些全局变量在哪里定义而遍历好多jsp文件。不知道大家有什么好的方法处理这样的情况?
我自己的想法是分离出一个common.jsp,定义一个js的util类CommonProperties(这个类写在CommonProperties.js中) 然后在这个common.jsp中写
<script src="js/CommonProperties.js"></script>
<script>
CommonProperties.setProperty('producerPatch', '<%= request.getParameter("producerPatch")%>')
CommonProperties.setProperty('userId', '<%= request.getParameter("userId")%>')
CommonProperties.setProperty('isMuni', '<%= request.getParameter("isMuni")%>')
</script>
在需要用到这些全局变量的jsp中最上面先include common.jsp
<jsp:include page="common.jsp"></jsp:include>最后如果哪个外部的js再要用到这个js变量 那就不是直接引用这些全局变量而是写成CommonProperties.getProperty()的方式,譬如:原来在 GridPortlet.js 要用到userId
if (userId == "se15251") {
   alert("Welcome!")
}
现在改成
if (CommonProperties.getProperty("userId") == "se15251") {
   alert("Welcome!")
}
请各位高手指教。

解决方案 »

  1.   

    一様、統一定義在CommonProperties.js里、使用時、引入CommonProperties.js
      

  2.   

    方法1:
    在服务器端保存到Cookie里,然后用调用cookie去取方法2:
    <script>
    var producerPatch = '<%= request.getParameter("producerPatch")%>';
    var userId = '<%= request.getParameter("userId")%>';
    var isMuni = '<%= request.getParameter("isMuni")%>';
    </script>将以上代码写成自定义标签,如果每个人都要用的话