2010-07-26 2 views
2

Основной настройки сервлета JSP Я знаком с ....Генерация HTML из JSP

RequestDispatcher dispatcher = request.getRequestDispatcher(resourceA.jsp); 

dispatcher.forward(request, response); 

Проблема в том, в дополнение к отправке ответа обратно в браузер (resourceA.jsp), мне нужно чтобы создать второй вывод HTML из ресурсаB.jsp, который, в свою очередь, будет отправлен по электронной почте или использован для создания pdf-документа.

Это не делать каждый раз, только в определенных условиях и по телефону

dispatcher.forward(request, response); 

во второй раз я и IllegalArgumentException.

Я просто нужен способ в генерации HTML из JSP (в основном заменив $ {пар} значения) и возвращающегося HTML, как String, без кода состояния или заголовков, только HTML и A не имеют ничего общего с B , поэтому фильтры не будут работать.

------ переигровка к первому Ответ ----- комментарий к небольшой --- без форматирования

Я не могу понять, почему это так difficaled ....

весь магний находится там, чтобы объединить данные с содержимым HTML в

${par} 
${par['key']} 
<c:if test="${patBoolean}" > 
<c:forEach var="pvar" varStatus="s_pvar" items="${parList}"> 

Я даже создал оболочку для маскировки getOutputStream() и getWriter(), создавая свой собственный PrintWriter

public class ResponseWrapper extends HttpServletResponseWrapper{ 
    private PrintWriter printWriter; 

    public ResponseWrapper(HttpServletResponse response){ 
     super(response); 
    } 

    public ServletOutputStream getOutputStream() throws java.io.IOException{....} 

    public PrintWriter getWriter() throws java.io.IOException {....} 

} 

в получении результата для resourceB.jsp, но проблема заключается в том dispatcher.forward (запрос, ответ) наборы isCommitted некоторые изделия в оригинальной HttpServletResponse.

+0

Используете ли вы второй JSP для создания PDF-файла или отправки электронной почты от клиента или с сервера? Если вы пытаетесь сделать это с сервера, я должен признать, что JSP не являются правильным решением, механизм шаблонов лучше подходит для этой задачи. –

+0

Я просто посмотрел на Velocity ... Посмотрите на код: #foreach ($ criterion in $ criteria) .... он имитирует jsp's, мне нужно изучить другой способ создания сценариев с отдельными страницами, использование кода ... это так просто jsp, attribute, html ... Я уже делаю это, и он работает для электронной почты и PDF, но второй диспетчер. Назад к браузеру, теперь единственная проблема. ... должно быть, и ДА, я делаю это со стороны SERVER. – nico

+0

Я думаю, вам нужно искать два HTTP-запроса вместо одного, особенно если вам удалось получить работу электронной почты/PDF. Для того же запроса сервер просто не отвечает на два разных типа контента. Это может также помочь, если вы можете разработать свой вариант использования, так как немного сложно обернуть голову тем фактом, что электронное письмо генерируется сервером и отправляется клиенту. –

ответ

1

JSP - это не то, что нужно сделать здесь. Имейте отдельный процесс, который заполняет шаблон Velocity (для электронной почты) или создает PDF-файл с использованием XSL-FO или iText и оставляет JSP из него. Это полностью отдельный случай использования от отправки ответа HTTP.

+0

Я не понимаю, почему это так сложно .... все магниевы там, чтобы объединить данные с содержимым HTML в ... см. Отредактированный пост – nico

+0

@nico, это сложно, потому что сервер откликался на ответ клиент для первоначального запроса; после того, как ответ был совершен, вы не можете написать другой ответ или изменить оригинал. Вы не можете изменить это поведение сервера - так работает Интернет. –

+0

(+1) для предложения Velocity. –

Смежные вопросы