Inclusion dynamique et existence de fichier

Il est possible dans une page JSP d’inclure un fichier à l’aide de la commande <jsp:include page=”nomfichier” />

Il est tout autant possible de réaliser une inclusion dynmique de fichier, ce qui est util dans le cas de ce site pour gérer des articles écrits sous forme de fichiers indépendants. Dans ce cas, il est possible d’utiliser la commande suivante : <jsp:include page='<%=obj.getNom()%>’ />

Toutefois, lors d’un inclusion dynamique, il est possible que le fichier à inclure n’existe pas, dans le cas de l’inclusion d’un fichier “.jsp”, son existance est vérifiée et une Exception est levé, il est donc possible de tester celà simplement avec un “try-catch” comme le montre l’exemple ci-dessous :

<%  try {   %>

           <jsp:include page='<%= page.jsp %>' />

<%    } catch ( Exception e ) {  %>

           <jsp:forward page="error.jsp" %>

<%    }    %>

Toutefois, dans le cas de l’inclusion d’une page autre, html par exemple, aucune exception n’est levée si la page n’existe pas, une solution consiste donc à vérifier avec l’inclusion l’existance au non du fichier comme le montre l’exemple ci-dessous. Notons que cet exemple fonctionne avec des chemins absolus et non avec des chemins relatifs, le chemin de la page courante etant plus difficile à gérer.

<% 
        if ( new java.io.File( 
             application.getRealPath( filename )).exists() ) {
%>
         <jsp:include page='<%="/"+filename%>'/>

<%  } else { %>

         <jsp:forward page="error.jsp"/>

<%  }    %>

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.