Ce n'est pas facile avec JSTL directement. Je vous suggère d'utiliser une classe pour vérifier si le fichier existe et retourner une valeur booléenne. Cela vous permet d'utiliser une instruction JSTL choose ou if pour atteindre votre objectif.
L'utilisation d'un fichier de classe peut être abordée de plusieurs façons. J'écrirais probablement une classe utilitaire et créerais un taglib personnalisé qui pourrait être appelé en utilisant EL/JSTL pour faire le travail. Vous pouvez voir un exemple de ce type d'approche ici: How to call a static method in JSP/EL?
Voici un exemple de classe d'utilitaire de fichier que j'ai utilisé par le passé pour rechercher des fichiers dans Tomcat.
package com.mydomain.util;
public class FileUtil implements Serializable {
public static boolean fileExists(String fileName){
File f = new File(getWebRootPath() + "css/" + fileName);
return f.exists();
}
private static String getWebRootPath() {
return FileUtil.class.getProtectionDomain().getCodeSource().getLocation().getPath().split("WEB-INF/")[0];
}
}
Puis à l'intérieur /WEB-INF/functions.tld, créez votre définition:
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>2.0</tlib-version>
<uri>http://www.your-domain.com/taglib</uri>
<function>
<name>doMyStuff</name>
<function-class>com.mydomain.util.FileUtil</function-class>
<function-signature>
java.lang.Boolean fileExists(java.lang.String)
</function-signature>
</function>
</taglib>
La dans la JSP:
<%@ taglib prefix="udf" uri="http://www.your-domain.com/taglib" %>
<c:if test="${udf:fileExists('my.css')}">
<!-- do magic -->
</c:if>
vérifier, assez proche: http: // stackoverflow.com/questions/2624657/how-can-you-check-if-a-file-exists-before-including-importing-it-in-jsp –
catch block ne va pas résoudre mon problème car j'utilise html 'link' tag pour inclure le fichier css. puis-je inclure css en utilisant jstl? – S4beR