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

Tho*_*mas 3 java xml freemarker struts2 taconite

所以,我正在使用Struts2的freemarker模板来制定我的回复.但是,由于我也尝试使用taconite,我需要使用"text/xml"的内容类型发送响应.我似乎无法找到一种方法来使用freemarker指令来设置内容类型,而且我并不精通struts知道是否有办法通过它来实现.

那么,我该怎么做呢?

Las*_*ico 7

在Action类中,实现ServletResponseAware接口,并使用一个简单的:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

更多信息请访问:http://www.roseindia.net/struts/struts2/strutsresources/access-request-response.shtml

  • 这对我有用 - 不是公认的. (2认同)

Ulf*_*ack 7

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

<action name="..." class="...">
  <result name="SUCCESS">
    <param name="contentType">text/html</param>
Run Code Online (Sandbox Code Playgroud)