调用外部JavaScript文件中的会话变量
Call session variables in external JavaScript file
我正在为我的JSP页面开发一个数字格式转换器。我有一些金额是由脚本操纵的。我有两个会话变量,"userThousandSeparator"answers"userDecimalSeparator",其中包含两个符号,主要是和,。
JSP文件具有以下结构
<html>
<body>
...
<span class="list-group-item list-group-item-sm">Instructed amount<span class="pull-right"><em id="instructedAmount"class="numberField">${instructedAmount}</em> <em id="instructedAmountCurrency">${instructedAmountCurrency}</em></span></span>
<span class="list-group-item list-group-item-sm">Counter value amount<span class="pull-right"><em id="counterValueAmount class="numberField">${counterValueAmount}</em> <em id="counterValueAmountCurrency">${counterValueAmountCurrency}</em></span></span>
...
<script src="js/numberFormatting.js"></script>
</body>
</html>
nnumberFormatting.js包含以下代码,用于通过会话变量交换千位和十进制分隔符:
function handleNumericFields(){
$('.numberField').each(function(){
var amount = $(this).text();
var splittedValues = amount.split(/[,.]/);
amount = "";
for(var i=0 ; i < (splittedValues.length - 1) ; i++){
amount += splittedValues[i];
if(i < (splittedValues.length - 2)) {
amount += "${sessionScope.userThousandSeparator}";
}
}
amount += "${sessionScope.userDecimalSeparator}";
amount += splittedValues[splittedValues.length - 1]
$(this).text(amount);
});
}
$( document ).ready(function() {
handleNumericFields();
});
现在的问题是,当我在<script>
标记之间的jsp中添加这个时,它可以完美地工作。但现在我想将这个脚本添加到一个单独的文件中,这样我就可以将它用于多个jsp,但现在我遇到了问题。
例如,数字500000.00的格式为500${sessionScope.userThousandSeparator}005${sessionScope.userDecimalSeparator}00
为什么我的脚本不再知道会话变量,以及如何解决这个问题?
您的JS脚本将按原样传输到浏览器。由于它不是JSP,所以不能在其中使用EL。显然,它没有被处理,只是在脚本中按原样添加了。
你可以选择
- 定义或多或少的全局变量,并在JS代码中提取它们
- 将JS代码嵌入HTML页面中,或者至少嵌入可配置的部分,比如对所需函数的调用
- 更改
handleNumericFields
函数以接受参数,例如thousandsSeparator
和decimalSeparator
。甚至只是locale
- 将JS文件实现为JSP,但您必须小心缓存代理(例如,不推荐)
如果可能的话,我建议将参数引入函数。或者,如果它们只是像"分隔符"这样的类似配置的值,那么您可能会处理全局变量。不漂亮,但能胜任。
相关文章:
- 将会话变量从一个页面传递到另一个页面
- 如何使用 php 会话变量作为 Angular Js 数据
- 通过Javascript更改PHP会话变量
- 正在Javascript响应中设置会话变量
- 将会话变量与javascript变量进行比较
- 我在会话变量中传递了一个数组.我需要将关键笔划传递给它以返回值
- 无法获取php会话变量以在javascript中设置var
- 使用Jquery在页面加载上测试php会话变量
- 移动浏览器没有;t支持会话变量
- 如果JS会话变量为null,如何避免500内部服务器错误
- 带有 Meteor 的通用会话变量键模板助手
- 使用 Javascript 或 jQuery 检索会话变量的简单快捷的方法
- 设置会话变量并从Jquery更改页面
- Meteor会话变量未存储数组
- PHP未通过javascript代码访问会话变量集
- 调用外部JavaScript文件中的会话变量
- 用户使用会话变量登录
- 通过AJAX将会话变量传递到PHP文件
- 更新图像切换上的php会话变量
- 为什么php页面刷新发布会话变量