Доступ к JSONObject в jsp - PullRequest
1 голос
/ 26 мая 2011

Моему JSP передается JSONObject в контексте, для которого ему необходимо выполнить некоторую обработку, например создание таблиц и т. Д.

Но когда я пытаюсь получить доступ к члену этого объекта, он даетследующая ошибка - (имя одного из ключей в этом объекте в порядке)

 Servlet.service() for servlet jsp threw exception { javax.servlet.jsp.el.ELException:
 Unable to find a value for "ok" in object of class "org.json.JSONObject" using operator "."

Код доступа к JSP выглядит следующим образом -

<% @ taglib uri = "http://java.sun.com/jsp/jstl/core"prefix = "c"%>

<c:if test="${serviceOutput.ok}">
    <c:if test="${serviceOutput.ret.proposalCount} > 0">
.....

Может кто-нибудь предложить, как я могу решить эту проблему и успешно получить доступ ко всем членам этого объекта?

Ответы [ 2 ]

1 голос
/ 09 октября 2012

Другой вариант, который можно использовать сейчас, - это использовать другую библиотеку анализа JSON, такую ​​как json-simple (http://code.google.com/p/json-simple/).. JSONObject в этой библиотеке расширяет HashMap, а JSONArray расширяет ArrayList, поэтому EL должен с ними работать.тогда бы не пришлось менять ваш JSTL или делать дополнительный анализ.

1 голос
/ 26 мая 2011

EL понимает только Javabeans и Map с.Вам нужно позволить сервлету предварительной обработки преобразовать каждый элемент JSONObject в полноценный Javabean с методами получения, который можно использовать в EL, или в Map.

Вотпример, который преобразует его в Map:

Map<String, Object> serviceMap = new HashMap<String, Object>();
serviceMap.put("ok", serviceOutput.getBoolean("ok"));
serviceMap.put("foo", serviceOutput.getString("foo"));
// ...

request.setAttribute("serviceMap", serviceMap);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

Таким образом, выражения EL, такие как ${serviceMap.ok}, будут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...