【发布时间】:2017-05-05 10:26:58
【问题描述】:
一旦分配的会话属性将值传递给 JSP 中的隐藏输入字段,我如何能够自动调用 JS 函数。请看下面:
Java 类:
session.setAttribute("activity1", 1);
session.setAttribute("activity2", 0);
JSP:
<table id="activityTbl" style="width: 100%; border:1px solid black;" align="center">
<thead>
<tr>
<td>Activity1</td>
<td>Activity2</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<div id="actDiv1" style="border:1px solid black;"></div>
</td>
<td>
<div id="actDiv2" style="border:1px solid black;"></div>
</td>
</tr>
</tbody>
</table>
<input type="hidden" id="act1" value="${sessionScope.activity1}"/>
<input type="hidden" id="act2" value="${sessionScope.activity2}"/>
Javascript:
$('#act1').change(function(){
if($(this).val() == '1'){
$('#actDiv1').css('background-color', 'green');
}else{
$('#actDiv1').css('background-color', 'red');
}
});
$('#act2').change(function(){
if($(this).val() == '1'){
$('#actDiv2').css('background-color', 'green');
}else{
$('#actDiv2').css('background-color', 'red');
}
});
一旦隐藏字段的值包含从会话属性传递的值,它将自动执行脚本。所以意思是,在传递值后,立即调用js函数。
非常感谢您的帮助,如果对此有任何其他说明,请告诉我。
【问题讨论】:
-
我不确定,但
JSP变量在解析 HTML 时是否只解析一次?所以你的 change 事件永远不会被调用 -
这行不通。生成 HTML 时,会话变量被插入到隐藏字段中,服务器将输出一个 HTML 文件,其中已经填充了这些值。不会触发任何更改事件,因为您的隐藏输入不会在客户端更改。
-
session始终保留在服务器端。并且您的 JS/网页在客户端执行。现在 JSP 引擎编译您的 JSP 并将 html 响应发送回客户端浏览器。所以像${sessionScope.activity1}这样的代码总是会在服务器端执行。每当 html 响应到达浏览器时;它将已经填充了那些隐藏的字段。所以在你的 JS 代码中你只需要验证它们的值。
标签: javascript java jquery jsp session