我有一个Struts2动作,其中由stream
生成的响应由velocity生成。但这是HTML和Javascript,但不是我需要的所有东西,如会话,cookie等。我怎么能在我的行动,会话和cookie中传递响应?
我的行动
@Action(value = "example",
results = {
@Result(name = "success", type = "stream", params = { "contentType", "text/html" })
})
public String example() throws Exception {
serviceId = (Long) getObjectSession("serviceId");
selIdfile = Long.parseLong(idpreview);
MpsServiceTemplate mpsServiceTemplate = mpsServiceTemplateDAO
.getMpsServiceTemplateById(selIdfile);
MpsService service = (MpsService) maasCustomDAO.loadbyId(MpsService.class, serviceId);
String html = htmlBuilder.getHtml(service.getParent().getName(), service.getName(), new String(mpsServiceTemplate.getTemplateCode()), null);
inputStream = new StringBufferInputStream(html);
return SUCCESS;
}
答案 0 :(得分:0)
Struts2在执行操作之前捕获servlet对象,如request
,response
,session
。如果在堆栈中使用servletConfig
拦截器,则可以使用这些对象填充操作。您也可以通过ServletActionContext
访问它们。您可以将cookieProvider
拦截器添加到操作
允许操作将Cookie发送到客户端,必须执行操作
CookieProvider
。您必须在默认情况下引用此拦截器 堆栈或在操作堆栈中,请参见下面的示例。<action ... > <interceptor-ref name="defaultStack"/> <interceptor-ref name="cookieProvider"/> ... </action>
这将允许您在操作中将会话和cookie传递给响应。