Альтернатива для Джексона ObjectMapper - PullRequest
0 голосов
/ 22 февраля 2012

Я ищу taglib для использования с Джексоном или вместо него ObjectMapper. Я работаю над обновлением нашего веб-сайта, и мы не допускаем блоки встроенного кода в наших файлах JSP. Поэтому мне нужно найти библиотеку тегов, которая может решить мои проблемы.

<jsp:useBean id="mapper" class="org.codehaus.jackson.map.ObjectMapper"  />
<%=mapper.writeValueAsString(pageContext.getAttribute("result"))%>

Но я не могу преобразовать это в нечто вроде этого:

 <c:out value="${mapper.writeValueAsString(pageContext.getAttribute('result'))}"></c:out>

Это исключение:

Функция writeValueAsString должна использоваться с префиксом, если пространство имен по умолчанию не указано

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Я решил эту проблему, реализовав функциональность в файле .tag в папке WEB-INF, где мы разрешаем встроенное кодирование. Не совсем лучшее решение, но оно работает.

0 голосов
/ 22 февраля 2012

Определите пользовательскую функцию JSTL:

  • это должен быть статический метод
  • создайте .tl, который определяет функцию:

.

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>functions</short-name>
    <uri>http://foo.com/tags</uri>

    <function>
        <name>getJSON</name>
        <function-class>com.....ObjectMapper</function-class>
        <function-signature>String writeValueAsString(java.lang.String)</function-signature>
    </function>
</taglib>

Затем вы можете использовать его с f:getJSON(..)

Но, как правило, это может быть неправильно делать в JSP - предварительно вычислить его в контроллере / сервлете и добавить егокак атрибут модели.

...