java - 是否可以在 jsp 中根据条件设置页面内容类型或为单个 jsp 设置不同的内容类型

标签 java xml json jsp

我想使用单个 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/

相关文章:

android - JSON解析成textview Android

c# - 将 JSON 字符串转换为 DataTable C# 时出现问题

Java - jndi ldap 慢速搜索

java - Jtable 未填充一条记录

asp.net - 请检查我的 XPath 查询

xml - 删除 scala 中的前缀属性 (scala-xml)

java - Gradle : Multiple subtasks share the same extension variable object

java - 如何以编程方式从 Magnolia cms 注销

xml - 对于 2.4MB 的 XML 文件,您会推荐哪个 Ruby XML 库?

javascript - 你如何在 JavaScript 中编写来自 JSON 的空键?