2010-10-03 9 views
1

Je viens de créer une nouvelle application IceFaces et j'essaie d'inclure une barre de navigation dans toutes les pages. Lorsque j'utilise la balise jsp:directive.include le fichier est inclus, mais lorsque j'utilise jsp:include il ne semble pas être chargé. En fait, lorsque je vérifie le code source HTML dans mon navigateur, c'est comme si le fichier inclus était complètement vide. Je ne veux pas utiliser jsp:directive.include car il ne montrera pas automatiquement les mises à jour du fichier inclus.JSP: include ne restitue pas le fichier inclus

Mon environnement: Eclipse 3.5, Tomcat 6, JSF 1.2, IceFaces 1.8.

Procédure pour reproduire le problème et des morceaux de code:

  1. créer une nouvelle dynamique de projet Web avec les options suivantes: exécution cible: Apache tomcat v6.0 version du module web dynamique: 2,5 Configuration : ICEfaces project

  2. créer un nouveau fichier ICEFaces JSPX - le fichier d'accueil. Certains code:

    <jsp:directive.page contentType="text/html;charset=ISO-8859-1" /> 
    
    
    <f:view > 
        <ice:outputDeclaration doctypeRoot="HTML" 
         doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN" 
         doctypeSystem="http://www.w3.org/TR/html4/loose.dtd" /> 
        <html> 
        <head> 
        <title>test file</title> 
        <link rel="stylesheet" type="text/css" 
         href="./xmlhttp/css/rime/rime.css" /> 
        </head> 
        <body> 
         <jsp:directive.include file="./vertical_navigation.jsp" /> <!-- working --> 
         <jsp:include page="./vertical_navigation.jsp" /> <!-- not working, no error though --> 
        </body> 
        </html> 
    </f:view> 
    

  3. créer le fichier à inclure, aussi comme un nouveau fichier ICEFaces JSPX. Code simplifié:

    <ice:form> 
         <ice:panelGrid columns="1" width="152"> 
         <ice:graphicImage url="./img/image.jpg"></ice:graphicImage> 
         <ice:panelCollapsible expanded="true"> 
          <f:facet name="header"> 
           <ice:panelGroup> 
            <ice:outputText value="Customer"/> 
           </ice:panelGroup> 
          </f:facet> 
          <ice:panelGrid columns="1"> 
           <ice:commandLink action="customer"><ice:outputText value="Customer name" /></ice:commandLink> 
          </ice:panelGrid> 
         </ice:panelCollapsible> 
        </ice:panelGrid> 
        </ice:form> 
        </body> 
        </html> 
    </f:view> 
    

Quelques remarques:

  1. Je suis complètement nouveau à JSF, alors pardonnez-moi pour toute erreur évidente.
  2. Dans le fichier d'accueil (le premier) Je n'utilise pas les deux balises en même temps. J'ai collé les deux ici juste pour montrer que j'essaye les deux options.
  3. J'ai créé les deux fichiers en tant que "fichier JSPX ICEFaces", mais le second a reçu l'extension .jsp.
  4. Lorsque j'utilise la balise directive.include, le fichier inclus est chargé. Mais si je le change, il n'est pas automatiquement republié.

Répondre

1

Pour commencer, vous devez séparer et distinguer plusieurs technologies:

  • JSP est une technologie d'affichage Java qui vous permet d'écrire en HTML/CSS/JS et utiliser taglibs pour appeler back-end Java code et/ou contrôle le flux de sortie. JSPX est le même que JSP, mais vous oblige à écrire du code au format XML.

  • Les balises spécifiques à JSP sont remplacées par des balises au format XML. JSPX est également appelé "Document JSP".Here est un tutoriel de base qui souligne les différences dans les balises. JSF est un framework MVC basé sur des composants qui fournit des composants dans le style des taglibs qui sortent HTML/CSS/JS.

Vous ne pouvez pas utiliser <jsp:include> dans une page JSPX. Vous devez transformer la page JSPX en une page JSP. Vous devez renommer le fichier .jspx en .jsp et remplacer les balises spécifiques à JSPX par des balises JSP. Voici un exemple de coup d'envoi pour JSP avec JSF/Icefaces:

<%@ page pageEncoding="ISO-8859-1" %> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> 
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> 
<%@ taglib uri="http://www.icesoft.com/icefaces/component" prefix="ice"%> 
<!DOCTYPE html> 
<f:view> 
    <html lang="en"> 
     <head> 
      <title>Title</title> 
     </head> 
     <body> 
      <jsp:include page="include.jsp" /> 
     </body> 
    </html> 
</f:view> 
+0

la raison n'est pas clair pour moi, mais je l'ai trouvé une documentation indiquant que nous ne devrions pas utiliser jsp: inclure dans ICEfaces: http: //www.icefaces. org/docs/v1_8_2/htmlguide/devguide/references2.html –

+1

Parce qu'ils encouragent fortement le balisage XML. En passant, avez-vous regardé [Facelets] (http://facestutorials.icefaces.org/tutorial/facelets-tutorial.html)? C'est à peu près une extension sur JSPX et depuis Java EE 6 le successeur de JSP. Il y a un ''. – BalusC

+0

Oui, j'essaie d'utiliser Facelets, mais je suis un peu confus mais encore. De toute façon, je n'utilise pas jsp: include plus. jsp: directive.include fonctionne bien et l'actualisation de tout fichier modifié n'est pas si importante. –

Questions connexes