我正在开发 Struts2网络应用程序,目前的任务是以CSV,EXCEL,PDF格式发送自动邮件。 我启动了Timer api来发送自动邮件(可以安排任务以便将来执行)。
所有格式都已准备就绪,但发送邮件时收到错误,因为 HttpServletRequest 对象在run()方法内部给出了null值。
HttpServletRequest request = ServletActionContext.getRequest();
我需要获取请求对象以在发送邮件时获取语言和会话。 这是我的班级(我使用谷歌guice注入服务)
public class MailTimerTask extends TimerTask{
private final Utility mails;
private final MailService mailsrv;
private MailTimerTaskBean taskbean = new MailTimerTaskBean();
@Inject
MailTimerTask(Utility mails, MailService mailsrv) {
this.mails= mails;
this.mailsrv= mailsrv;
}
public void run() {
System.out.println("Mails-- Start");
mailList();
System.out.println("Mails-- Finished");
}
public void mailList() {
ByteArrayOutputStream outputStream = null;
HttpServletRequest request = ServletActionContext.getRequest(); // ERROR request object
for (Customer customer : taskbean.getPdfBean().getListCustomers()) {
outputStream = crt.generateOutputStream(taskbean, customer.getIdCustomer());
if (outputStream != null) {
MailBean mailBean = setMailBean(request, customer, outputStream, taskbean.getSite());
mailsrv.sentMail(mailBean);
}
}
}
public MailTimerTaskBean getMailtimertaskbean() {
return taskbean;
}
public void setMailtimertaskbean(MailTimerTaskBean mailtimertaskbean) {
this.taskbean = mailtimertaskbean;
}
我也尝试过使用Bean中的传递请求对象(在本例中为taskbean),通过这样做我得到了请求对象,但会话为空
不知道为什么请求对象变为null?使用 ServletActionContext
如果有人可以建议我发送自动邮件的其他api,那会有帮助吗?
谢谢。