如何在JavaScript中从EL获取值

如何在JavaScript中从EL获取值,javascript,jsp,el,Javascript,Jsp,El,我将一个名为student的映射对象传递给jsp,学生拥有一些属性,如姓名、性别、地址、电话等。现在在js函数中,我想从学生那里获得一些属性。起初,我尝试这样编码,但不起作用。如何修复我的代码 //get the value from the key,I write "${student.NAME}" is OK. function initSelection(key){ console.log("key:"+key+"value:"+("${student."+key+"}")); } $(

我将一个名为
student
的映射对象传递给jsp,学生拥有一些属性,如
姓名、性别、地址、电话等。现在在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");
}

您在map中传递一个变量,而在Javascript函数中以错误的方式访问它

//要使用JSTL访问hashmap中的值,需要编写
“${student['NAME']}”


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");
});
var值={};
值['${item.key}']='${item.value}';
函数初始化选择(键){
log(“键:+key+”值:+value[key]);
}
$(函数(){
初始选择(“名称”);
第一选择(“性别”);
初始选择(“电话”);
});

在服务器端,映射内容用于生成填充JS变量“values”的JS源代码。在客户端,iniSelection()函数可以获取“values”变量中的值。当学生地图中没有使用单引号字符时,此代码就可以工作。

我总是使用EL-like${student['NAME']}在JSP中从地图中获取值。但我刚才试过,${student.NAME}也有效,正如问题中提到的flower。
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");
});