如何从 JavaScript 中的 EL 获取值
How can I get a value from EL in JavaScript
我将一个名为 student
的地图对象传递给 jsp 并且学生在 js 函数中有一些 属性 像 NAME,SEX,ADDRESS,PHONE
等 on.Now我想先从 student.At 得到一些 属性,我尝试这样编码,但它不会 work.How 修复我的代码?
//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 函数中以错误的方式访问它。
//TO access value in hashmap using JSTL you need to write
"${student['NAME']}"
.
function initSelection(key){
var name=${student['NAME']};
}
$(function() {
initSelection("NAME");
initSelection("SEX");
initSelection("PHONE");
}
EL 代码 运行s 在服务器端,而 Javascript 代码 运行s 在浏览器中。
这一行是服务器端和客户端代码的混合,它将无法 运行 正确:
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 源代码 'values'。在客户端 iniSelection() 函数可以获取 'values' 变量中的值。当学生地图中没有使用单引号字符时,此代码有效。
我将一个名为 student
的地图对象传递给 jsp 并且学生在 js 函数中有一些 属性 像 NAME,SEX,ADDRESS,PHONE
等 on.Now我想先从 student.At 得到一些 属性,我尝试这样编码,但它不会 work.How 修复我的代码?
//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 函数中以错误的方式访问它。
//TO access value in hashmap using JSTL you need to write
"${student['NAME']}"
.
function initSelection(key){
var name=${student['NAME']};
}
$(function() {
initSelection("NAME");
initSelection("SEX");
initSelection("PHONE");
}
EL 代码 运行s 在服务器端,而 Javascript 代码 运行s 在浏览器中。
这一行是服务器端和客户端代码的混合,它将无法 运行 正确:
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 源代码 'values'。在客户端 iniSelection() 函数可以获取 'values' 变量中的值。当学生地图中没有使用单引号字符时,此代码有效。