Điều này không dễ dàng thực hiện với JSTL trực tiếp. Tôi sẽ đề nghị bạn sử dụng một lớp để kiểm tra xem tệp tồn tại và trả về một giá trị boolean. Điều này sẽ cho phép bạn sử dụng một JSTL chọn hoặc nếu tuyên bố để hoàn thành mục tiêu của bạn.
Sử dụng tệp lớp học có thể được tiếp cận theo nhiều cách. Tôi có lẽ sẽ viết một lớp tiện ích và tạo một taglib tùy chỉnh có thể được gọi là sử dụng EL/JSTL để thực hiện công việc. Bạn có thể xem ví dụ về loại phương pháp này tại đây: How to call a static method in JSP/EL?
Sau đây là ví dụ về lớp tiện ích tệp mà tôi đã sử dụng trước đây để kiểm tra tệp trong 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];
}
}
Sau đó bên /WEB-INF/functions.tld, tạo định nghĩa của bạn:
<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>
Các trong JSP:
<%@ taglib prefix="udf" uri="http://www.your-domain.com/taglib" %>
<c:if test="${udf:fileExists('my.css')}">
<!-- do magic -->
</c:if>
Nguồn
2013-05-29 00:46:36
Kiểm tra này, đủ gần: http: // stackoverflow.com/questions/2624657/how-can-you-check-if-a-file-exists-before-including-importing-it-in-jsp –
khối catch sẽ không giải quyết được vấn đề của tôi vì tôi đang sử dụng html 'liên kết' để bao gồm tệp css. tôi có thể bao gồm css bằng cách sử dụng jstl? – S4beR