Necesito obtener la salida representada de Spring 3.1 MVC View en una cadena (para enviar a un convertidor PDF, a un correo electrónico MIME, etc.) y he estado usando el siguiente código:Obtener la salida representada de Spring 3.1 MVC View
Esto se inyecta en el controlador
@Autowired
TilesViewResolver viewResolver;
y el siguiente método de ayuda:
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();
}
crédito a Ted Young y su HTML2PDFViewResolver en el que se basa mi código.
Mi pregunta es la mejor forma de hacerlo? El código que tengo funciona bien, pero ahora me estoy acercando a Production y pensé que si había margen de mejora, me gustaría intentarlo.
Gracias a todos
nop, se ve bien. –
preguntas como una pregunta ... Lo vi como una respuesta ... exactamente lo que estaba buscando ... absolutamente útil para mí, ya que solo necesitaba el html para enviarlo como parte de mi respuesta json ... Pulgares arriba hombre ... ¡Rock! – CodeBurner