如何在JavaScript中从EL获取值

时间:2015-09-13 04:45:02

标签: javascript jsp el

我将一个名为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");
}

2 个答案:

答案 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");
}