我正在处理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内容吗?
答案 0 :(得分:1)
s:property
具有针对HTML,JavaScript和XML的内置转义功能。
默认情况下,它会转义HTML。
我认为您根本想逃避的是
<s:property value="sampleStr" escapeHtml="false" />
您还应该检查响应的http标头("content-type: text/html"
在您的情况下是错误的)。
除了使用jsp之外,您还可以使用其他结果类型,也可以编写自己的结果类型。
答案 1 :(得分:0)
我认为浏览器正在尝试将XML标签解释为HTML标签,但这样做却忽略了它们。
您需要将每个<和>字符分别替换为&lt;
和&gt;
。您可以在Java API中使用非常有用的String.replaceAll()
方法。
此外,您可以签出Oracle's page。在您使用JSP和XML技术进行开发过程中,这将非常有用。