<%@ page pageEncoding=“UTF-8”%> ignorés lorsqu'ils sont inclus à partir d'un autre jsp
J'ai le code (maintenant dans github) comme :
mon.jsp (générique jsp - toutes mes pages jsp suivre cette tendance plus ou moins) :
<%@ 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ù :
haut.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" />
tête.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">
bas.jsp :
</div>
<div class="footer">
<p>
blah
</p>
</div>
</div>
</body>
</html>
Comme vous le voyez, ou vous pouvez prendre mon mot pour lui - les balises équilibre correctement. Ma question est - pourquoi je ne peux pas inclure le
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
directive dans mon top.jsp
fichier ? Croyez-moi, il ne fait rien. Dois-je m'inquiéter que le <%@ page session="false"%>
est de même ignorés ?
Grâce
- Je ne comprends pas quel est le comportement que vous attendez, et le comportement réel?
- J'attends de mes pages pour afficher correctement les caractères utf quand j'inclus le
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
ligne dans mon top.jsp. Ce que je vois, c'est poubelle (commeΣελίδα Î±Ï€Î»Î¿Ï Î§Ïήστη
), à moins que j'ai ajouter la directive dans chaque jsp comme on le voit dans myjsp.jsp - Lorsque vous effectuez @inclure des JSP est juste analysée dans le contexte de l', y compris JSP, tout comme la directive #include du langage C, de sorte que vous ne devriez pas mettre le <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> partout, mais seulement dans mon.jsp (le fichier principal). Je ne vois pas pourquoi vous obtenez ces étranges personnages.
- Je veux inclure la directive @page dans toutes mes pages - la chose étrange est que lorsqu'il est inclus ne fait rien (ordures ménagères) - quand je l'ai mis dans chaque jsp fonctionne comme prévu (pas de déchets). Le <%@ page session="false"%> semble fonctionner OK lorsque inclus (en
top.jsp
) - quelle est donc la différence entre les 2 ? Comment puis-je inclure la directive dans toutes mes pages jsp ? Dois-je utiliserjsp:include
?
Vous devez vous connecter pour publier un commentaire.
Vous shoudn pas besoin de mettre le
@page
directive inclus dans chaque fichier JSP. Strictement parlant, ils ne sont pas les Jsp, ils sont fichiers texte être inclus dans une page JSP.@include
est équivalent à couper et coller du texte à partir de votre inclus la page de droite dans votre main JSP. C'est comme le#include
directive C.S'il vous plaît essayer de mettre
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
comme le première ligne de votre principal fichier JSP (c'est à dire celui qui comprend les autres), et à ne pas le placer n'importe où ailleurs.Espérons que cela aide.
top.jsp
- pensez-vous qu'il suffirait d'ajouter le@page
là ?@page
à latop.jsp
puis toutes les pages seraient inclure cette directive - j'ai pensé que d'abord le compilateur "colle" le texte de tous les fichiers inclus à l'intérieur de la myjsp.jsp et les compile - apparemment, il n'est pas si ? Essayez-le pour vous - copier les fichiers et remplacer "CONTENU" dans myjsp avec le grec, le chinois et le comme - mis@page
seulement dans la partie supérieure.jsp - vous obtiendrez le ~ΣελÎÎα απλ` - suppression de la NOMENCLATURE n'a pas aidé.top.jsp
de la@page
directive n'est pas assezParamètre de Type de Contenu dans l'en-Tête HTTP
C'est la meilleure façon de définir le Type de Contenu d'une page individuelle, car elle est la plus élevée sur les Règles de Priorité de la liste. L'en-tête HTTP de la valeur pour la page web, l'hébergement de votre FeedSweep widget peut être situé dans l'un des cas suivants scripts côté serveur langues:
.NET
Type de contenu et le jeu de caractères sont définies sur l'objet de réponse. Pour définir le jeu de caractères, utilisez:
Perl
La sortie correcte de l'en-tête avant qu'une partie de la page réelle. Après le dernier en-tête, utiliser un double saut de ligne.
Python
Utiliser la même solution que pour Perl (sauf que vous n'avez pas besoin d'un point-virgule à la fin).
PHP
Utiliser la fonction header() avant de générer le contenu.
Servlets Java
Utiliser la méthode setContentType sur le ServletResponse avant d'obtenir n'importe quel objet (Flux ou l'Écrivain) utilisée pour la sortie.
Si vous utilisez un Écrivain, la Servlet prend automatiquement soin de la conversion à partir de Cordes de Java pour le codage sélectionné.
JSP
Utiliser la directive de page:
Sortie de l'extérieur.println() ou l'expression des éléments (<%= objet%>) est automatiquement convertie à l'encodage choisi. Aussi, la page elle-même est interprétée comme étant dans cet encodage.
ASP
Type de contenu et le jeu de caractères sont définies sur l'objet de réponse. Pour définir le jeu de caractères, utilisez: