Мне нужно получить визуализированный вывод Spring 3.1 MVC View в строку (для отправки в конвертер PDF или в MIME-адрес электронной почты и т.д.), и я использовал следующий код:
Это вводится в контроллер
@Autowired
TilesViewResolver viewResolver;
И следующий вспомогательный метод:
private String renderViewToString(ModelMap map, HttpServletRequest request, HttpServletResponse httpServletResponse, final String viewName) {
final StringWriter html = new StringWriter();
View pdfView = new View() {
@Override
public String getContentType() {
return "application/pdf";
}
@Override
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(response) {
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(html);
}
};
View realView = viewResolver.resolveViewName(viewName, Locale.US);
Map<String, Object> newModel = new HashMap<String, Object>(model);
newModel.put("pdfMode", Boolean.TRUE);
realView.render(newModel, request, wrapper);
}
};
try {
pdfView.render(map, request, httpServletResponse);
} catch (Exception e) {
// Ignored for now
}
return html.toString();
}
Кредит Тед Янг и его HTML2PDFViewResolver из которого основан мой код.
Мой вопрос - лучший способ сделать это? Код, который у меня есть, отлично работает, но теперь я приближаюсь к Production, и я подумал, что если есть возможности для улучшения, я бы хотел попробовать.
Спасибо всем