Как отобразить строку как xml на странице jsp

Я работаю над проектом Struts2, в классе действий я передаю строку на страницу jsp. Я хочу отображать содержимое этой строки как xml на странице jsp.

jsp-страница: response.jsp

<%@ taglib prefix = "s" uri = "/struts-tags" %>
    <s:property value = "sampleStr" />

Класс действия: ResponseAction

public class ResponseAction extends ActionSupport {
private static final long serialVersionUID = 1L;
public String sampleStr;

public String execute() throws IOException {
    String responseStr = readStringFile();
    setSampleStr(responseStr);
    return SUCCESS;
}

@SuppressWarnings({ "rawtypes", "unchecked" })
public String readStringFile() throws IOException{
      String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"+
              "<response>"+ "$$" +
              "</response>";
     InputStream inputStream = XmlFormatter.class.getResourceAsStream("/sample.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-16")));
        String s = "";
        List list = new ArrayList();
        String line;
        while ((line = reader.readLine()) != null) {
            list.add(line);
        }
        for (Object s1: list) {
            s= s + s1;
        }
        xmlStr =   xmlStr.replace("$$", s);
        return xmlStr;

}


public String getSampleStr() {
    return sampleStr;
}

public void setSampleStr(String sampleStr) {
    this.sampleStr = sampleStr;
}
}

Struts.xml:

<package name = "default" namespace = "/" extends = "struts-default">
  <action name = "PEConsolidation" class = "com.metlife.ibit.pe.web.controller.actions.ResponseAction">
  <interceptor-ref name = "defaultStack" />
    <result name = "success">/WEB-INF/jsps/response.jsp</result>
  </action>
</package>

Когда я смотрю response.jsp, он отображает строку возврата в виде текста. пожалуйста, помогите кто-нибудь отобразить как содержимое xml?

Если вы хотите, чтобы это был истолкованный как XML, вам необходимо установить расположение контента, с оговоркой, что пользователи / браузеры будут обрабатывать XML-контент в зависимости от того, что он настроил. Если вам просто нужен простой текст, например, не окрашенный в синтаксис, просто возвращайте его не как HTML, а как простой текст.

Dave Newton 09.08.2018 23:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
352
2

Ответы 2

Я думаю, что браузер пытается интерпретировать теги XML как теги HTML и, если этого не делает, игнорирует их.

Вам нужно будет заменить каждый символ <и> на &amp;lt; и &amp;gt; соответственно. Вы можете использовать очень полезный метод String.replaceAll() в Java API.

Кроме того, вы можете проверить этот Страница Oracle. Было бы очень полезно в вашем процесс разработки с использованием JSP с технологиями XML.

s:property имеет встроенную функцию экранирования для HTML, JavaScript и XML. По умолчанию он экранирует HTML.

Я думаю, что то, что вы хотите сделать, - это вообще никуда не деться:

<s:property value = "sampleStr" escapeHtml = "false" />

Вы также должны проверить http-заголовки ответа ("content-type: text/html" в вашем случае будет неправильным).

Вместо использования jsp вы можете использовать другой тип результата, возможно, написать свой собственный.

https://struts.apache.org/core-developers/result-types.html

Другие вопросы по теме