我想要显示JSON&使用单个jsp页面的XML。 一次只有一个属性来自java类。 我的代码看起来像这样。
<%
String json = (String) request.getAttribute("userRequestedJsonById");
if (!StringUtility.isNullOrEmpty(json)) {%>
<%=json%>
<% } else { %>
<%
String xml = (String) request.getAttribute("searcherRespondedXmlById");
if(!StringUtility.isNullOrEmpty(xml)) {%>
<%@page contentType="text/xml"%>
<%=xml%>
<%}%>
<%}%>
我正在使用一个名为JSONVIEW的插件来正确显示json。如果它找到内容类型xml,它将无法工作。 内容类型仅在条件上设置,jsp包含此内容类型甚至条件不满足。 我不太了解jsp set内容类型是如何工作的,有没有其他方法可以做到这一点或限制在特定条件下设置内容类型xml。
感谢。
答案 0 :(得分:2)
设置内容类型需要在打印任何内容之前完成,因此您需要摆脱导致空白打印的标记的无意义打开和关闭。然后,您将使用response.setContentType()
:
<%
String json = (String) request.getAttribute("userRequestedJsonById");
if (!StringUtility.isNullOrEmpty(json))
{
response.setContentType("application/json");
out.print(json);
}
else
{
String xml = (String) request.getAttribute("searcherRespondedXmlById");
if(!StringUtility.isNullOrEmpty(xml))
{
response.setContentType("text/xml");
out.print(xml);
}
}
%>
如果你打算使用Scriptlets来保持你的代码块打开并使用out.print()
而不是打开,关闭,然后&lt;%= var%&gt;,并再次打开,它也会更干净。那太难以理解了。