web-dev-qa-db-fra.com

<% @ page pageEncoding = "UTF-8"%> ignoré lorsqu'il est inclus à partir d'un autre jsp

J'ai du code (maintenant dans github ) comme:

my.jsp (un jsp générique - tous mes jspS suivent plus ou moins ce modèle) :

<%@ 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" %>

où :

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>

Comme vous le voyez - ou vous pouvez prendre mon Word pour cela - les balises s'équilibrent correctement. Ma question est - pourquoi ne puis-je pas inclure le

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

directive dans mon top.jsp fichier? Croyez-moi, cela ne fait rien. Dois-je craindre que le <%@ page session="false"%> est pareillement ignoré?

Merci

12
Mr_and_Mrs_D

Vous n'avez pas besoin de mettre le @page directive dans chaque fichier JSP inclus. À proprement parler, ce ne sont pas des JSP, ils sont fichiers texte étant inclus dans une JSP. @include équivaut à couper et coller le texte de votre page incluse directement dans votre JSP principal. C'est comme le #include directive en C.

Veuillez essayer de mettre <%@ page language="Java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> comme toute première ligne de votre fichier JSP principal (c'est-à-dire celui qui inclut les autres), et ne le placez nulle part ailleurs.
J'espère que ça aide.

14
gd1