作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用默认 css 设计一个应用程序。我想要一个选项,我可以在其中包含更改默认皮肤的新 css(自定义)文件。
我可以通过在我的 jsp 页面中同时引用(自定义和默认 css)来实现这一点,其中默认值将始终存在,并且可以为不同的用户加载自定义 css。
在不存在自定义文件的情况下,我在浏览器控制台中收到“找不到文件”(404) 错误。在将自定义文件包含在 jsp 之前,有没有办法(或 jSTL 标记)检查它是否存在?
最佳答案
直接使用 JSTL 不容易做到这一点。我建议你使用一个类来检查文件是否存在并返回一个 bool 值。这将允许您使用 JSTL 选择或 if 语句来实现您的目标。
可以通过多种方式使用类文件。我可能会编写一个实用程序类并创建一个自定义 taglib,可以使用 EL/JSTL 调用它来完成这项工作。您可以在此处查看此类方法的示例: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];
}
}
<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>
<%@ taglib prefix="udf" uri="http://www.your-domain.com/taglib" %>
<c:if test="${udf:fileExists('my.css')}">
<!-- do magic -->
</c:if>
关于jsp - 仅当存在时才在jsp中包含css文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788790/
我是一名优秀的程序员,十分优秀!