Struts 1.3中如何将内容类型text/xml输出到浏览器

问题描述 投票:0回答:1

我在 Struts 1.3 应用程序中有一个 Ajax 调用,但无法让它向浏览器返回有效的 XML。 XML 的内容被正确发送回来,但是浏览器仍然将响应类型重新识别为 text/html。

我的动作类看起来像这样:

 public ActionForward newContractCAUAjax(ActionMapping actionMapping,
        ActionForm actionForm, HttpServletRequest httpServletRequest,
        HttpServletResponse httpServletResponse)throws Exception {

    String target="forwardToCAUXML";

    DynaActionForm dynaActionForm = (DynaActionForm) actionForm;

    httpServletResponse.setContentType("text/xml");
    httpServletResponse.setHeader("Content-type","application/xhtml+xml");

    ...

    return actionMapping.findForward(target);
}

我当前正在做的只是获取浏览器设置的 XML 字符串并使用 jQuery 的 parseXML() 方法来获取有效的 XML,但这看起来像是一个 hack,我宁愿让 struts 将响应作为有效的 XML 发送回来回复。

java xml struts-1
1个回答
8
投票
httpServletResponse.setContentType("text/xml");
httpServletResponse.setHeader("Content-type","application/xhtml+xml");

这毫无意义第二行用错误的内容类型覆盖第一行。

至于具体问题,我不使用Struts,所以我可能是错的,但我想象它有效地将请求转发到JSP。 JspServlet 隐式使用

text/html
内容类型。这样,任何基于 servlet 的内容类型更改都将完全无效。在 JSP 中,您需要通过 JSP 顶部的
@page
声明来设置它,如下所示:

<%@page contentType="text/xml" pageEncoding="UTF-8" %>

(页面编码也很重要,XML标记默认为UTF-8)

不要忘记从 Struts 操作方法中删除这两行。

© www.soinside.com 2019 - 2024. All rights reserved.