Java 在JSP中,如何动态设置contentType?
我有一个非常简单的JSP,如下所示:Java 在JSP中,如何动态设置contentType?,java,jsp,servlets,content-type,Java,Jsp,Servlets,Content Type,我有一个非常简单的JSP,如下所示: <%@ page contentType="application/json" %>${actionBean.response} <% if (actionBean.isJson()) { response.setContentType("application/json"); } else if (actionBean.isJsonp()) { response.setContentTyp
<%@ page contentType="application/json" %>${actionBean.response}
<%
if (actionBean.isJson()) {
response.setContentType("application/json");
} else if (actionBean.isJsonp()) {
response.setContentType("application/javascript");
}
%>
${actionBean.response}
actionBean.response
返回一个字符串
。有时该字符串是json,其内容类型为“application/json”,但有时该字符串是jsonp,其内容类型为“application/javascript”。但我不知道如何动态设置contentType的值
,但它给了我一个错误,告诉我不能设置contentType两次李>
有没有办法动态设置此值 我不认为jsp是用来做这件事的。您可以在javascript函数中捕获JSON响应,而无需声明内容类型 我也从未见过任何jsp页面变成javascript文件
您可以同时使用
。您可以尝试使用Scriptlet(不理想,但我不确定是否有其他方法),如下所示:
<%@ page contentType="application/json" %>${actionBean.response}
<%
if (actionBean.isJson()) {
response.setContentType("application/json");
} else if (actionBean.isJsonp()) {
response.setContentType("application/javascript");
}
%>
编辑:正如Joop在评论中提到的,请确保您没有使用@page指令设置contentType。“我认为jsp不应该这样做”这句话中的“那”到底是什么?有一个内容类型,而不是html范围内的任何内容类型(我可能误解了这一点,但在使用struts开发jsp的6年中,我从未见过它)好的,那么你会怎么做呢?好的,JSON在javascript中使用,所以我们使用ajax调用并捕获结果并解析它。关于javascript,它不应该是动态的,所以你应该能够使用声明。动态值应该在你的页面中初始化。我想我不需要一个。但是从技术上讲,返回api resp的内容onse是一种呈现形式。在
@page
指令中省略contentType
属性。我将对此进行一次尝试,并将其标记为有效答案。谢谢