2016-12-24 10 views
2

Его вопрос из двух частей.
Часть 1: Я хочу, чтобы установить content-type из Jsp страницы в зависимости от заголовка 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}'/> 

, для которого я получаю ответ, как this.
Я также попытался
<c:set target="${pageContext.response}" property="ContentType" value="${contentType}"/>
для который я получил
Invalid property in &lt;set&gt;: "ContentType"
Мое другое выражение EL оценивается должным образом, поэтому я уже провел эксперимент с атрибутом isELIgnored. Я также не хочу использовать теги scriptlet.
Часть 2: Я хочу установить status code динамически без помощи тега scriptlet от JSP-страница только.
В настоящее время я делаю
<% response.setStatus(200) %>
Я знаю, он может быть установлен в servlet или filter, но я хочу, чтобы установить из jsp страницы или через custom tag.Kindly вести меня через это.

ответ

3

Решение
я наткнулся на мою предыдущую работу, в которой я использовал setAttribute(), так что я попробовал это, и она работала так это то, как это может быть сделано.
Для обоих части создания пользовательского тега, расширяя BodyTagSupport, в котором мы можем получить HttpServletResponse объект таким образом:

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

После того как вы на response объект, который вы можете легко установить Content-Type и status code

 Смежные вопросы

  • Нет связанных вопросов^_^