如何将变量从 JSP 传递到 CSS

How to pass varibles from JSP to CSS

我有一个 JSP,代码如下:

String themeImagesPath = cdnHost + themeContextPath + theme.getImagesPath();

我有一个包含以下代码的 CSS 文件:

.lfr-portlet-toolbar .lfr-toolbar-button.import-button a {
    background-image: url(<%= themeImagesPath %>/common/delete.png);
}        

如果我不使用 CSS 文件直接将样式插入到 JSP 中,它就可以工作。但是当我把上面的代码放到一个单独的文件中时,它就不起作用了。

我想知道是否有办法将变量themeImagesPath传递给CSS?

不可以,您不能在 css 文件中使用这些变量。如果您真的想在 css 文件中使用变量,您应该使用内联 css 或使用 saas or less

您不能在 CSS 文件中使用服务器端变量。您可以如何在 JSP 中将样式应用为内联样式并达到相同的效果。

在您的 JSP 中,找到您要将 background-image 设置为的元素,并对其应用内联样式,例如

<a class="import-button" href="#" style="background-image: url(<%= themeImagesPath %>/common/delete.png)"></a>

关于JSP和CSS有一个很重要的概念就是,浏览器只理解HTML和CSS。 JSP 在服务器端处理。它发送给客户端的是经过处理后符合html标准的输出,因此浏览器知道如何呈现页面。您可以通过 "View page source" 验证以上内容。如果你明白了这些,那么你就会意识到,"CSS accepting the variable pass from JSP"根本就没有这回事,因为一个是在服务端执行的,一个是在客户端执行的。要实现你的目标,有很多方法。我在这里举出 3 个例子:

  1. 创建一个JSP,并将CSS规则写入其中。由于它是一个 JSP,服务器将解释 scriptlet 并处理输出到客户端。笔记。不要担心 CSS 内容被写入 JSP 文件。 HTTP 不关心文件扩展名。只要 mime 类型和 CSS 语法正确,浏览器就可以将 JSP 视为 CSS 文件。

  2. 使用嵌入的CSS将规则包含到JSP,即<style>元素中。因为一切都写在JSP,scriptlet可以解释

  3. 使用元素的样式属性分配 CSS 规则。原因与第2点相同。但是,由于代码的可维护性和可读性,这种做法不太被鼓励。