我正在处理 Struts2 项目,在操作类中,我将字符串传递给 jsp 页面。我想在 jsp 页面中将该字符串内容显示为 xml。
JSP页面:响应.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="sampleStr" />
操作类:响应操作
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;
}
}
支柱.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>
当我查看响应.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
我认为浏览器试图将XML标签解释为HTML标签,如果不这样做,就会忽略它们。
您需要将每个<和>字符分别替换为&lt;
和&gt;
。你可以在Java API中使用非常有用String.replaceAll()
方法。和>
此外,您可以查看此甲骨文的页面。这对使用带有 XML 技术的 JSP 的开发过程非常有帮助。