Допустим, я использую Spring и имею контроллер, который возвращает модель, содержащую поле data
, которое является экземпляром Джексона ObjectNode
. В data
у меня есть StringBuilder
с именем log
.
В JSP я использую
${data}
и я получаю этот вывод:
{"log":hello world}
Теперь, если я хочу получить доступ к log
, я подумал, что мог бы использовать
${data["log"]}
но все, что я получаю, это
javax.el.PropertyNotFoundException: Property 'log' not found on type org.codehaus.jackson.node.ObjectNode
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191)
javax.el.BeanELResolver.property(BeanELResolver.java:300)
javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
org.apache.el.parser.AstValue.getValue(AstValue.java:123)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938)
:
${data.log}
показывает то же самое.
Я знаю, что согласно EL data.log
ищет метод getLog()
на data
, но IIRC Maps<?,?>
поддерживает этот вид доступа к своим ключам. Есть ли подобный способ заставить его работать с Джексоном? Или, если это просто не работает, как бы вы это сделали?