2015-05-05 4 views
1

Вам нужна ваша помощь. Я не могу получить json string в jsp после добавления в modelAndView. После отладки я обнаружил, что он добавлен в modelAndView instace.Spring MVC: Невозможно получить значение json в jsp, он дает 0

Ниже приведен фрагмент кода:

Контроллер:

modelAndView.addObject("json-data",jsonhelper.getJSONString(viewData)); 

JSP

<c:if test="${json-data != null}"> 

<script type="text/javascript"> 

    window.jsonData =${json-data}; 

</script> 

</c:if> 

Здесь ViewData является объектом, что мне нужно получить в JSP, но в jsp он дает 0.

+0

Так как же Javascript понять, что ваш код Java это? – Mukus

+0

Получается ли печать на вашем контроллере? –

+0

вы можете попробовать этот код в jsp ' ' –

ответ

3

Тире (-) in json-data интерпретируется как арифметический оператор minus.

Согласно spec (1.7.1):

бинарных операторов - А {+, -, *} B

Если A и B равны нулю, возврат (Long) 0

Поэтому json-data разрешен к 0, json-data != null дает истинное, и window.jsonData присваивается значение 0.

Одним из решений является переименование переменной в jsonData или любой другой допустимый идентификатор Java.

С другой стороны, это также будет работать:

window.jsonData = <%= request.getAttribute("json-data") %> 
+0

Я получил это, но упоминается где-то в документации – ved

+0

@ved Я посмотрел и обнаружил, что мой первый ответ не совсем корректный, см. Отредактированный ответ для пояснения и ссылки на спецификацию EL. – Bewusstsein

+0

ссылка вы упомянули не работает. Пожалуйста, дайте мне действующую ссылку. – ved