Как я могу обернуть мой сгенерированный JSP HTML в оболочку JSONP? - PullRequest
3 голосов
/ 22 июня 2010

У меня есть страница JSP, которая отображает блок HTML.При обычном использовании я загружаю содержимое JSP с помощью AJAX (в частности, jQuery.load()) и вставляю его на страницу.Теперь мне нужно иметь возможность загрузить этот блок HTML в другой домен, что означает, что ограничения из одного источника не позволят мне использовать «обычный» AJAX.

Этот блок включается в несколько местнекоторые из которых будут в том же домене, а некоторые в других доменах.Я бы предпочел, чтобы он продолжал работать так, как работает в настоящее время, если только не передан определенный параметр (по всей вероятности, это будет функция обратного вызова, передаваемая для поддержки JSONP).

Мое концептуальное решение (таким образом,far) - выводить JSONP с одной парой KEY / VALUE, имеющей полный HTML-вывод в качестве VALUE.

ПРОБЛЕМА: Я не могу найти какой-либо способ получить буферизованный вывод, который ожидаетотправляется, когда JSP заканчивает рендеринг и изменяет его (в этом случае, чтобы заменить новые строки на «\ n». Без этого я получаю ошибку Unterminated String Literal, когда моя функция JSONP достигает первой новой строки.

ПРИМЕР:

<%@page contentType="text/html"%>
<%
    String callback = request.getParameter("callback");
%>
<% if(callback != null) { %>
    // JSONP Function call, defining Key/Value Pair
    // New lines break because JavaScript strings cannot cross lines
    <%= callback %>({"key":'
<% } %>

<div id="my_content">
    ...
</div>

<% if(callback != null) { %>
    '}) // End of JSONP Function Call
<% } %>

1 Ответ

2 голосов
/ 22 июня 2010

Библиотека JSON Taglib должна делать то, что вам нужно. Я не использовал это сам, но это правильный подход к проблеме, что-то вроде этого:

<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>

<json:object>
<json:property name="key">

<div id="my_content">
    ...
</div>

</json:property>
</json:object>

Возможно, вам придется заключить скобку JSONP в результат самостоятельно.

...