[英]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.