Potrzebuję uzyskać renderowane wyjście widoku Spring 3.1 MVC na ciąg (w celu wysłania do konwertera plików PDF lub wiadomości MIME itp.) I Używam następujący kod:Uzyskiwanie renderowanego wyjścia Spring 3.1 MVC View
To jest wstrzykiwany do sterownika
@Autowired
TilesViewResolver viewResolver;
a następującej metody pomocnika:
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();
}
zgłosił Ted Young i jego HTML2PDFViewResolver, z której oparty jest mój kod.
Moje pytanie jest lepszym sposobem na zrobienie tego? Kod, który mam działa dobrze, ale teraz zbliżam się do Produkcji i pomyślałem, że jeśli jest miejsce na ulepszenie, chciałbym spróbować.
Dzięki wszystkim
nop, wygląda dobrze. –
zadałeś to pytanie ... Postrzegałem to jako odpowiedź ... dokładnie to, czego szukałem ... absolutnie przydatne dla mnie, ponieważ potrzebowałem tylko html, aby wysłać go jako część mojej odpowiedzi jsona ... Kciuki w górę, człowiek ... Rocka! – CodeBurner