Подтвердить что ты не робот

<% @page pageEncoding = "UTF-8" %> игнорируется при включении из другого jsp

У меня есть код (теперь в github), например:

my.jsp (общий jsp - все мои jspS следуют этому шаблону более или менее) :

<%@ include file="include/top.jsp" %>
<title>THE TITLE</title>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="include/head.jsp" %>
<%@ include file="include/no_menu.jsp" %>
CONTENT
<%@ include file="include/bottom.jsp" %>

где:

top.jsp:

<%@ page session="false"%>
<%@ include file="tag_libs.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

head.jsp:

<link href="${pageContext.request.contextPath}/css/twoColFixLtHdr.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="container"><!-- closes in bottom -->
        <div class="header"><!-- closes in menu -->
            <p>
                <a href="home"> <img src="${pageContext.request.contextPath}/images/logo7.jpg"
                    alt="Ted 2012 Logo" name="Ted 2012 Logo" id="Ted_2012_Logo"
                    style="background: display:block; padding: 5px 20px; margin-left: 150px; border-style: solid" /></a>
            </p>
            <hr />

no_menu.jsp:

</div>
<div class="content">

bottom.jsp:

        </div>
        <div class="footer">
            <p>
                blah
            </p>
        </div>
    </div>
</body>
</html>

Как вы видите - или вы можете принять мое слово за это - правильность тегов. Мой вопрос: почему я не могу включить

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

в моем top.jsp файле? Поверьте, он ничего не делает. Должен ли я беспокоиться о том, что <%@ page session="false"%> также игнорируется?

Спасибо

4b9b3361

Ответ 1

Вам не нужно указывать директиву @page в каждом включенном JSP файле. Строго говоря, они не JSP, они являются текстовыми файлами, включенными в JSP. @include эквивалентно вырезанию и вставке текста с вашей включенной страницы прямо в ваш основной JSP. Он похож на директиву #include в C.

Попробуйте поместить <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> в качестве самой первой строки вашего основного JSP файла (т.е. того, который включает в себя другие), и не помещайте его нигде.
Надеюсь, что это поможет.

Ответ 2

Настройка Content-Type в заголовке HTTP

Это лучший способ установить Content-Type для отдельной страницы, потому что он самый высокий в списке правил приоритета. Значение HTTP-заголовка для веб-страницы, на которой размещается ваш виджет FeedSweep, можно установить на любом из следующих языков сценариев на стороне сервера:

.NET

Тип содержимого и кодировка задаются в объекте ответа. Чтобы установить кодировку, используйте:

  • Response.ContentType = "text/html; charset = UTF-8";

Perl

Выведите правильный заголовок перед любой частью фактической страницы. После последнего заголовка используйте двойной разрыв строки.

  • print "Content-Type: text/html; charset = utf-8\n\n";

Python

Используйте то же решение, что и для Perl (за исключением того, что вам не нужна точка с запятой в конце).

  • print "Content-Type: text/html; charset = utf-8\n\n"

PHP

Используйте функцию header() перед созданием любого содержимого.

  • header ('Content-type: text/html; charset = utf-8');

Сервлеты Java

Используйте метод setContentType в ServletResponse перед тем, как получить любой объект (Stream или Writer), используемый для вывода.

  • resource.setContentType( "text/html; charset = utf-8" );

Если вы используете Writer, Servlet автоматически выполняет преобразование из строк Java в выбранную кодировку.

JSP

Используйте директиву страницы:

  • <% @page contenttype = "text/html; charset = UTF-8" % >

Выход из out.println() или элементов выражения (<% = object% > ) автоматически преобразуется в выбранную кодировку. Кроме того, сама страница интерпретируется как находящаяся в этой кодировке.

ASP

Тип содержимого и кодировка задаются в объекте ответа. Чтобы установить кодировку, используйте:

  • <% Response.Charset = "UTF-8" % >