Как вывести тип контента text / xml в браузер в Struts 1.3 - PullRequest
1 голос
/ 29 июля 2011

У меня Ajax-вызов в приложении Struts 1.3, и у меня возникают проблемы с его возвратом в браузер действительного 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-строки, которую устанавливает браузер, и использование метода parseXML () jQuery для получения правильного XML, но это похоже на хак, и я бы предпочел, чтобы распорки отправляли ответ обратно как действительный ответ XML.

1 Ответ

8 голосов
/ 29 июля 2011
httpServletResponse.setContentType("text/xml");
httpServletResponse.setHeader("Content-type","application/xhtml+xml");

Это не имеет смысла. Вторая строка заменяет первую с неправильным типом контента.

Что касается конкретной проблемы, я не делаю Struts, поэтому я могу ошибаться, но я 'Я полагаю, что он эффективно перенаправляет запрос в JSP.JspServlet неявно использует тип содержимого text/html.Таким образом, любое изменение типа контента на основе сервлетов не будет иметь никакого эффекта.В JSP вам необходимо установить его с помощью объявления @page в верхней части JSP следующим образом:

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

(кодировка страницы также довольно важна, по умолчанию для разметки XML используется UTF)-8)

Не забудьте удалить эти две строки из метода действия Struts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...