我需要进行特定的服务调用,我需要传递一个String对象作为
HTML参数.此
HTML将由该服务呈现(此服务发送电子邮件,此HTML将是电子邮件正文)
到目前为止,我一直在使用JSP文件进行所有模板操作.我的所有视图都呈现HTML页面并将其返回给用户.
我不知道如何执行JSP文件,填写所有信息然后将其转换为文本.这是我第一次使用Spring MVC.
编辑:
这里的相关问题真的已经过时了’09
最佳答案 我将重点介绍将jsp转换为文本的部分.
有一些关于jsp作为模板引擎的用法的评论,但我的建议是模板不可知.
我们的想法是模仿浏览器调用,即提交我们希望通过电子邮件发送结果的表单,并确保我们可以通过浏览器正确访问此页面.
我假设发布请求在这里改变得到很容易.
public class MailServiceHelper {
public String getJsp(String url, Map<String,String> form, HttpServletRequest request) {
//we can figure out the base url from the request
String baseUrl ="";
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(baseUrl+"/"+url);
for (String formElement : form.keySet()) {
method.setParameter(formElement, form.get(formElement));
}
try {
int statusCode = client.executeMethod(method);
if (statusCode >= HttpStatus.SC_OK && statusCode < HttpStatus.SC_MULTIPLE_CHOICES) {
byte[] responseBody = method.getResponseBody();
return new String(responseBody,StandardCharsets.UTF_8);
}else{
throw new RuntimeException("Failed to read jsp, server returened with status code: "+statusCode);
}
} catch (Exception e) {
throw new RuntimeException("Failed to read jsp",e);
}finally{
method.releaseConnection();
}
}
您可能还需要验证您的客户端是否也受支持.
我在我的exanple中使用httpclient 3.1看到http 3.1 authentication;切换到更新的客户端应该很容易.
通过电子邮件发送HTML在以下答案中引用:How do I send an HTML email?
建议使用内部样式表,以便电子邮件客户端正确呈现html.