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