簡體   English   中英

在JSP中設置內容類型和狀態代碼

[英]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 &lt;set&gt;: "ContentType"
我的其他EL表達式得到了正確的評估,因此我已經使用isELIgnored屬性進行了實驗。 我也不想使用scriptlet標簽。
第2部分:我想JSP頁面中沒有scriptlet標簽的幫助下動態設置status code
目前我正在做
<% response.setStatus(200) %>
我知道可以在servletfilter中設置它,但我希望從jsp頁面或通過custom標簽設置它。請指導我。


我偶然發現了我以前使用setAttribute()所以我嘗試了一下,並且它起作用了,所以這是可以做到的。
對於這兩個部分,都可以通過擴展BodyTagSupport來創建自定義標簽,在該標簽中,我們可以通過以下方式獲取HttpServletResponse對象:

HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();

獲得response對象后,您可以輕松設置Content-Typestatus code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM