流类型的 Struts 2 操作结果的放置会话



我有一个 Struts 2 动作,其中 stream 类型的响应由速度生成。但这是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;
}

Struts2 在执行操作之前捕获 servlet 对象,如 requestresponse session。如果在堆栈中使用拦截器servletConfig则可以使用这些对象填充操作。您也可以通过 ServletActionContext .您可以将拦截器添加到操作cookieProvider

允许操作将 cookie 发送到客户端,操作必须实现 CookieProvider .您必须默认引用此侦听器 堆栈或操作中的堆栈,请参见下面的示例。

<action ... >
  <interceptor-ref name="defaultStack"/>
  <interceptor-ref name="cookieProvider"/>
  ...
</action>

这将允许您在操作中将会话和 cookie 传递给响应。

相关内容

  • 没有找到相关文章

最新更新