我想使用单个 jsp 页面显示 JSON 和 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 设置内容类型的工作原理,有没有其他方法可以做到这一点或限制在特定条件下设置内容类型 xml。
谢谢。
最佳答案
设置内容类型需要在打印任何内容之前完成,因此您需要摆脱导致打印空白的无意义的标签打开和关闭。然后你将使用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);
}
}
%>
如果您要使用 Scriptlet 来保持代码块打开并使用 out.print()
而不是打开、关闭然后 <%=var%>,它也更干净, 并再次打开。那真是太难读了。
关于java - 是否可以在 jsp 中根据条件设置页面内容类型或为单个 jsp 设置不同的内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23005558/