JSP программно представляют

Стрелка Alt-Up перемещает текущий выбор строка, Стрелка Alt-Down спускает его. Я также использую Стрелку Alt-Shift-Up/Down все время. Ctrl-K и Ctrl-Shift-K довольно удобны, находя следующее/предыдущее возникновение текущего выбора (или последняя Находка, если ничто не выбрано).

13
задан Kevin Burke 17 August 2012 в 22:20
поделиться

6 ответов

Мне нужна страница JSP для программного рендеринга.

Каковы все же функциональные требования? Вы явно ищете решение в неправильном направлении. Что это, проблема / требование, для которой вы думаете, что это решение? Мы можем предложить лучшие предложения.

Вам, например, нужен только его вывод ? Если это так, то java.net.URLConnection может быть достаточно.

Редактировать : вы редактировали свой вопрос:

Я хочу каким-то образом изменить исходный JSP перед компиляцией (точнее, объединить два JSP вместе), поэтому мне нужен способ скомпилировать результат JSP из InputStream (или Reader) напрямую с помощью компилятора JSP.

Хорошо, это бит более понятен. Но зачем вам это нужно? Что на самом деле представляют собой эти JSP? Для чего предполагается использовать конечный результат?

Вы, например, просто хотите включить один JSP в другой? Например, включение head.jsp в main.jsp ? Если да, то может быть достаточно. Или, что еще хуже, содержат ли они необработанный код Java с каким-то конкретным кодом, который вы хотели использовать повторно? Если это так, то вы должны использовать для этого простые классы Java и, если необходимо, библиотеки тегов.

Редактировать 2 : как вы прокомментировали:

Но теперь нам нужен способ использовать эти страницы JSP (которые хранятся в память между прочим) в качестве макетов для всех страниц JSP, запрашиваемых пользователем

Просто сохраните файлы JSP в файловой системе диска внутри webapp '

8
ответ дан 1 December 2019 в 23:47
поделиться

Возможно, вы могли бы использовать задачу Tomcat JspC ant ?

1
ответ дан 1 December 2019 в 23:47
поделиться

JSTL - это просто библиотека тегов, используемых внутри файлов JSP.

1
ответ дан 1 December 2019 в 23:47
поделиться

По какой причине вы должны это делать? Если вам нужно объединить 2 файла jsp для обработки, можно использовать include Или вам нужны другие идеи? Не могли бы вы дать образец по вашему запросу?

1
ответ дан 1 December 2019 в 23:47
поделиться

Если JSP уже был предварительно скомпилирован сервером приложений, вы можете найти сгенерированный файл .class. В Tomcat это должно быть в каталоге $ CONTEXT_ROOT / org / apache / jsp /. Возможно, вам удастся каким-то образом запустить этот класс и сгенерировать свой вывод.

РЕДАКТИРОВАТЬ: Пропущено ваше изменение об изменении источника JSP.

Взгляните на org.apache.jasper.compiler.AntCompiler (включен в jasper.jar в Tomcat). Существует защищенный метод под названием generateClass, который вы можете переопределить и использовать:)

1
ответ дан 1 December 2019 в 23:47
поделиться

Я не совсем уверен, что это именно то, что вы ищете, но структура DWR содержит метод под названием WebContext.forwardToString , который пересылает текущий запрос плюс объект поддельного ответа на URL-адрес, а затем считывает содержимое буфера в память. Вот пример кода:

StringWriter sout = new StringWriter();
StringBuffer buffer = sout.getBuffer();

HttpServletResponse realResponse = getHttpServletResponse();
HttpServletResponse fakeResponse = new SwallowingHttpServletResponse(realResponse, sout, realResponse.getCharacterEncoding());

HttpServletRequest realRequest = getHttpServletRequest();
realRequest.setAttribute(WebContext.ATTRIBUTE_DWR, Boolean.TRUE);

getServletContext().getRequestDispatcher(url).forward(realRequest, fakeResponse);

return buffer.toString();

Вы можете использовать это, чтобы получить результаты rednering jsp и сохранить их в памяти. Вы можете скачать исходный код по указанной выше ссылке, чтобы увидеть, как работает SwallowingHttpServletResponse.

5
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: