[英]Setting Content-Type and Status-Code in JSP
这是一个两部分的问题。
第1部分:我想根据我正在执行的Accept
标头设置jsp页面的content-type
<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}'/>
为此我得到了回应
我也试过
<c:set target="${pageContext.response}" property="ContentType" value="${contentType}"/>
我为此
Invalid property in <set>: "ContentType"
我的其他EL表达式得到了正确的评估,因此我已经使用isELIgnored
属性进行了实验。 我也不想使用scriptlet标签。
第2部分:我想仅在JSP页面中没有scriptlet标签的帮助下动态设置status code
。
目前我正在做
<% response.setStatus(200) %>
我知道可以在servlet
或filter
中设置它,但我希望从jsp
页面或通过custom
标签设置它。请指导我。
解
我偶然发现了我以前使用setAttribute()
所以我尝试了一下,并且它起作用了,所以这是可以做到的。
对于这两个部分,都可以通过扩展BodyTagSupport
来创建自定义标签,在该标签中,我们可以通过以下方式获取HttpServletResponse
对象:
HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
获得response
对象后,您可以轻松设置Content-Type
和status code
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.