我将一个名为student
的地图对象传递给jsp,学生有一些属性,如NAME,SEX,ADDRESS,PHONE
等等。现在js函数我想从学生那里获得一些属性。首先,我尝试像这样编码,但它不起作用。如何修复我的代码?
//get the value from the key,I write "${student.NAME}" is OK.
function initSelection(key){
console.log("key:"+key+"value:"+("${student."+key+"}"));
}
$(function() {
initSelection("NAME");
initSelection("SEX");
initSelection("PHONE");
}
答案 0 :(得分:2)
EL代码在服务器端运行,而Javascript代码在浏览器中运行。
这一行是服务器端和客户端代码的混合,它将无法正常运行:
console.log("key:"+key+"value:"+("${student."+key+"}"));
这里$ {student.xxx}的表达式只在客户端完成,因为key是一个JS变量,但需要在服务器端运行才能获得EL表达式的预期值。
如果您可以使用JSTL,并且不想在服务器端引入任何可以将java对象转换为JSON字符串的库,则可以将此代码更改为:
var values = {};
<c:forEach var="item" items="${student}">
values['${item.key}'] = '${item.value}';
</c:forEach>
function initSelection(key){
console.log("key:"+key+"value:"+values[key]);
}
$(function() {
initSelection("NAME");
initSelection("SEX");
initSelection("PHONE");
});
在服务器端,地图内容用于生成填充JS变量“值”的JS源代码。在客户端,iniSelection()函数可以获取'values'变量中的值。当学生地图中没有单引号字符时,此代码有效。
答案 1 :(得分:-1)
您在地图中传递变量,并且您在Javascript函数中以错误的方式访问它。
//使用您需要编写的JSTL访问hashmap中的值
"${student['NAME']}"
。
function initSelection(key){
var name=${student['NAME']};
}
$(function() {
initSelection("NAME");
initSelection("SEX");
initSelection("PHONE");
}