首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Struts2中设置响应的内容类型

在Struts2中设置响应的内容类型
EN

Stack Overflow用户
提问于 2009-11-04 13:25:51
回答 5查看 18.9K关注 0票数 3

因此,我在Struts2中使用了freemarker模板来表达我的回答。但是,由于我也在尝试使用taconite,所以我需要使用"text/xml“的内容类型发送响应。我似乎找不到一种使用freemarker指令来设置内容类型的方法,而且我对struts也不是很精通,无法知道是否有方法可以完成它。

那么,我该怎么做呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-06 04:02:13

或者您可以在struts.xml中设置它

代码语言:javascript
复制
<action name="..." class="...">
  <result name="SUCCESS">
    <param name="contentType">text/html</param>
票数 7
EN

Stack Overflow用户

发布于 2009-11-04 18:15:05

在您的操作类中,实现ServletResponseAware接口,并使用简单的:

代码语言:javascript
复制
package your.package;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

public class YourAction extends ActionSupport implements 
                 ServletResponseAware {

  private HttpServletResponse response;

  public String execute() throws Exception{
    response.setContentType("image/png");
    return SUCCESS;
  }

  public void setServletResponse(HttpServletResponse response){
    this.response = response;
  }

  public HttpServletResponse getServletResponse(){
    return response;
  }
}

更多信息请点击此处:http://www.roseindia.net/struts/struts2/strutsresources/access-request-response.shtml

票数 7
EN

Stack Overflow用户

发布于 2010-03-19 03:58:18

在其他情况下实现ServletResponseAware可能会起作用,但对Freemarker和Struts2没有帮助。:-(我刚刚用调试器追踪了一下,发现...

  • 通过实现ServletResponseAware,我获得了访问响应的权限,并且我可以从我的操作中更改内容类型。很好。
  • 一旦我的操作完成,控制很快就在org.apache.struts2.views.freemarker.FreemarkerResult中结束了,它呈现模板
  • 方法preTemplateProcess()设置响应的内容类型,忽略我设置的值:-(
  • apparently有一个“自定义属性”可以用来覆盖它,但是我还没有在google
  • 中找到任何解释FreemarkerResult类本身可以有一个内容类型设置来覆盖默认值,但是...还不确定可以从哪里设置,也许是在struts configuration?

到目前为止,该操作似乎不能设置内容类型,但幸运的是,正如Thomas上面提到的那样,它覆盖了所有这些内容:

${response.setContentType("text/xml")}

所以至少在模板中是可能的。当然,为一组生成xml的操作提供一个通用的超类来处理这一点会更容易、更安全……

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1671823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档