10
Spring 3.1 MVC Viewのレンダリングされた出力をStringに取得する必要があります(PDFコンバータへの送信、またはMIMEメールなど)。私は、次のコードを使用している:Spring 3.1 MVCビューのレンダリングされた出力を取得する
これは、コントローラ
@Autowired
TilesViewResolver viewResolver;
そして、次のヘルパーメソッドに注入されていますTed Youngと彼の0123に
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();
}
クレジット私のコードの元になっています。
私の質問はこれを行う良い方法がありますか?私のコードはうまくいきますが、今はプロダクションに近づいています。改善の余地があるなら、試してみたいと思いました。すべて
nopです。 –
あなたはこれを質問として尋ねました...私はそれを答えとして見ました...まさに私が探していたものです...私はjsonの応答の一部としてHTMLを送信するだけでいいので絶対に役に立ちました...あなたの肩を上げて...あなたは揺れます! – CodeBurner