gpt4 book ai didi

java - Struts2 - 如何将 JSP 页面的结果作为操作类中的字符串(用于电子邮件)

转载 作者:搜寻专家 更新时间:2023-10-31 23:02:49 25 4
gpt4 key购买 nike

我想同时实现这两件事。

我在 Struts2 中有一个常规的 jsp 页面。xx/yy/zz/email.jsp

<html>
<head>
</head>
<body>
<s:property value="email"/>
</body>
</html>

这个页面的 url 可以是 xx/yy/zz/myEmail.action,而一些 Action 类会处理它...

public class MyEmailAction {
private String email;
public String execute(){
this.email = 'abc@xyz.com''
}
//setter and getter for 'email'
......
}

现在,我想要另一个 Action ,将 xx/yy/zz/myEmail.action 页面的结果作为电子邮件发送。

public class MyEmailAction {
private String email;
public String execute(){
this.email = 'abc@xyz.com''
}

public String send() {
this.email = 'abc@xyz.com''
Map mapping;
//put this.email into the mapping
String result = getResultOfJSP('../../../xx/yy/zz/email.jsp', mapping);
Email.send('me@me.com', 'you@you.com', 'My Subject', result);
}
//setter and getter for 'email'
......
}

所以问题是:我怎样才能将渲染的 JSP 的结果作为字符串获取?

我想要这个的原因显然是我想在一个地方(email.jsp)管理这个模板。

我知道我可以使用另一个速度 (vm) 页面,它具有与 jsp 完全相同的 html,但使用速度标记代替。但是,每当我需要对此模板进行更改时,我都必须在两个地方进行更改。

我想我也可以使用 URL 来获取结果,但我不想使用这种方式,因为它是对服务器的另一个请求。

谢谢

最佳答案

我在使用邮件 servlet 时遇到了这个问题,使用它来获取 jsp 的结果作为字符串:

HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(response) {
private final StringWriter sw = new StringWriter();

@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(sw);
}

@Override
public String toString() {
return sw.toString();
}
};
request.getRequestDispatcher("email.jsp").include(request,
responseWrapper);
String result = responseWrapper.toString();

设置邮件给html内容:

Email.send('me@me.com', 'you@you.com', 'My Subject', result);

关于java - Struts2 - 如何将 JSP 页面的结果作为操作类中的字符串(用于电子邮件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25936387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com