我想用默認的css設計一個應用程序。我想有一個選項,我可以包含新的CSS(自定義)文件,它改變了默認的皮膚。只包含jsp中的css文件存在
我可以通過在我的jsp頁面中引用這兩個(自定義和默認的css),其中默認將始終存在,並可以爲不同的用戶加載自定義css。
在沒有自定義文件的情況下,我在瀏覽器控制檯中收到'File Not Found'(404)錯誤。有沒有一種方法(或jstl標籤)來檢查自定義文件是否存在,然後將其包含在jsp中?
我想用默認的css設計一個應用程序。我想有一個選項,我可以包含新的CSS(自定義)文件,它改變了默認的皮膚。只包含jsp中的css文件存在
我可以通過在我的jsp頁面中引用這兩個(自定義和默認的css),其中默認將始終存在,並可以爲不同的用戶加載自定義css。
在沒有自定義文件的情況下,我在瀏覽器控制檯中收到'File Not Found'(404)錯誤。有沒有一種方法(或jstl標籤)來檢查自定義文件是否存在,然後將其包含在jsp中?
直接使用JSTL並不容易。我建議你使用一個類來檢查文件是否存在並返回一個布爾值。這將允許您使用JSTL選擇或if語句來實現您的目標。
使用類文件可以以多種方式處理。我可能會寫一個實用程序類並創建一個可以使用EL/JSTL來完成這個工作的自定義taglib。你可以在這裏看到這種類型的方法的一個例子:How to call a static method in JSP/EL?
以下是我過去用來檢查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];
}
}
內。然後/WEB-INF/functions.tld,創建你的定義:
<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>
中JSP:
<%@ taglib prefix="udf" uri="http://www.your-domain.com/taglib" %>
<c:if test="${udf:fileExists('my.css')}">
<!-- do magic -->
</c:if>
檢查這一點,非常接近:HTTP:// stackoverflow.com/questions/2624657/how-can-you-check-if-a-file-exists-before-including-importing-it-in-jsp –
catch塊不會解決我的問題,因爲我使用html'link'標記以包含css文件。我可以使用jstl包含css嗎? – S4beR