在JSP中设置内容类型和状态代码
这是一个由两部分组成的问题。在JSP中设置内容类型和状态代码,jsp,jstl,http-status-code-404,content-type,page-directives,Jsp,Jstl,Http Status Code 404,Content Type,Page Directives,这是一个由两部分组成的问题。 第1部分:我想根据我正在做的Accept标题设置jsp页面的内容类型 <c:if test="${fn:contains(header['accept'], 'xml')}"> <c:set var="contentType" value="application/xml;charset=UTF-8"/> </c:if> <c:if test="${fn:contains(header['accept'], 'jso
第1部分:我想根据我正在做的
Accept
标题设置jsp页面的内容类型
<c:if test="${fn:contains(header['accept'], 'xml')}">
<c:set var="contentType" value="application/xml;charset=UTF-8"/>
</c:if>
<c:if test="${fn:contains(header['accept'], 'json')}">
<c:set var="contentType" value="application/json;charset=UTF-8"/>
</c:if>
<jsp:directive.page contentType='${contentType}'/>
对此,我得到了类似
我也试过了
为此我得到了
集合中的无效属性:“ContentType”
我的另一个EL表达式得到了正确的计算,因此我已经对isaligned
属性进行了实验。我也不想使用scriptlet标记。
第2部分:我想动态设置状态代码
,而不需要JSP页面上的scriptlet标记的帮助。
目前我正在做
我知道它可以在servlet
或过滤器中设置,但我希望它可以从jsp
页面或通过custom
标记进行设置。请指导我完成此操作。解决方案
我偶然发现了我以前的工作,我在其中使用了setAttribute()
,所以我尝试了这个方法,它成功了,这就是它的实现方式。
对于这两个部分,通过扩展BodyTagSupport
来创建自定义标记,我们可以通过以下方式获得HttpServletResponse
对象:
HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
一旦你有了响应
对象,你就可以轻松地设置内容类型
和状态代码