如何在JSP页面中将字符串显示为xml

时间:2018-08-09 05:24:27

标签: java html xml jsp struts2

我正在处理Struts2项目,在操作类中,我将字符串传递给jsp页面。我想在jsp页面中将字符串内容显示为xml。

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内容吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我认为浏览器正在尝试将XML标签解释为HTML标签,但这样做却忽略了它们。

您需要将每个<和>字符分别替换为&amp;lt;&amp;gt;。您可以在Java API中使用非常有用的String.replaceAll()方法。

此外,您可以签出Oracle's page。在您使用JSP和XML技术进行开发过程中,这将非常有用。