在JSP中,如何动态设置contentType?

时间:2013-07-19 17:52:02

标签: java jsp servlets content-type

我有一个非常简单的JSP,如下所示:

<%@ page contentType="application/json" %>${actionBean.response}

actionBean.response返回String。有时该字符串是json,其contentType为“application / json”,但有时该字符串是jsonp,其contentType为“application / javascript”。但我无法弄清楚如何动态设置contentType的值。

  1. 我尝试在contentType周围使用<c:choose>,但它给出了一个错误,说我无法设置两次contentType。
  2. 我尝试使用EL作为属性值,但它没有扩展。
  3. 有没有办法动态设置这个值?

2 个答案:

答案 0 :(得分:4)

您可以尝试使用scriptlet(不理想,但我不确定还有其他方法),如下所示:

<%
    if (actionBean.isJson()) {
        response.setContentType("application/json");
    } else if (actionBean.isJsonp()) {
        response.setContentType("application/javascript");
    }
%>

编辑:正如Joop在评论中提到的那样,请确保您没有使用@page指令设置contentType。

答案 1 :(得分:0)

我不认为jsp的意图是这样做的。您可以在javascript函数中捕获JSON响应,而无需声明内容类型。

我也从来没有看到任何jsp页面变成javascript文件。

您可以使用<s:property name="something" escapeHtml="false" escapeJavascript="false"/>