2015-09-13 1 views
3

Я передаю объект-объект под названием student в jsp, и у студента есть свойство вроде NAME,SEX,ADDRESS,PHONE и т. Д. Теперь в функции js я хочу получить некоторое свойство от ученика. Сначала я пытаюсь сделать такой код, но он не работает. Как исправить мой код?Как я могу получить значение от EL в JavaScript

//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

EL код работает на стороне сервера, в то время как Javascript код работает в браузере.

Эта линия смешан из серверной и клиентской стороне кода, он не сможет корректно работать:

console.log("key:"+key+"value:"+("${student."+key+"}")); 

Здесь выражение $ {student.xxx} будет завершена только на стороне клиента потому что ключ - переменная 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

Вы передаете переменную на карте, и вы используете ее неправильно в функции Javascript.

// Для получения доступа значение в HashMap, используя JSTL вам нужно написать "${student['NAME']}".

function initSelection(key){ 
var name=${student['NAME']}; 

} 
$(function() { 
     initSelection("NAME"); 
     initSelection("SEX"); 
     initSelection("PHONE"); 
} 
+0

Я всегда использую EL как $ {student ['NAME']}, чтобы получить значение из карты в JSP. Но я просто попробовал, $ {student.NAME} также работает, как цветок упоминается в вопросе. –