如何将变量从JSP传递到CSS

时间:2018-08-02 09:15:35

标签: css jsp liferay

我有一个包含以下代码的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吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

关于JSP和CSS的一个非常重要的概念是,浏览器仅了解HTML和CSS。 JSP在服务器端处理。在处理之后,它发送给客户端的是符合html标准的输出,因此浏览器知道如何呈现页面。您可以通过“查看页面源代码”验证以上内容。如果理解了这些,那么您将认识到“ CSS接受来自JSP的变量传递”没有什么问题,因为一个在服务器上执行而一个在客户端上执行。为了实现您的目标,有很多方法。我在这里列举3个例子:

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

  2. 使用嵌入式CSS将规则包含在JSP中,即<style>元素。因为所有内容都是用JSP编写的,所以可以解释scriptlet。

  3. 使用元素的style属性分配CSS规则。原因与第2点相同。但是,由于代码的可维护性和可读性,因此不鼓励使用此方法。

答案 2 :(得分:-1)

不是,您不能在CSS文件中使用这些变量。如果您确实想在css文件中使用变量,则应该使用内联css或使用saasless