我的css文件使用URL的绝对路径使用此自定义字体。在默认上下文路径为空的情况下,它可以完美工作:
@font-face {
src: url('/font/myfont-Regular.woff') format('woff');
}
该Web应用程序部署在jBoss或Tomcat中,并且上下文路径是可配置的。在“ ABC”之下可以是任何东西。
<jboss-web>
<context-root>ABC</context-root>
</jboss-web>
在上下文路径为空的情况下,无法加载我的自定义字体,因为它不知道如何将“上下文路径”添加到“ URL”以获取字体位置。
设置上下文路径时,加载此自定义字体时出现404错误。 404的原因是它正在尝试通过加载 http://www.example.com/font/myfont-Regular.woff
它应该从以下位置加载:
http://www.example.com/ABC/font/myfont-Regular.woff
但是“ ABC”(上下文路径)可以在客户端站点上配置,并且我无法在CSS文件中对其进行硬编码。
我已经尝试在css文件中使用“ c:url”标签,但无法对其进行评估。 (这是可以理解的)。 CSS文件也不知道JSP脚本片段。
我想找到一种方法,通过了解“上下文路径”来加载自定义字体
答案 0 :(得分:0)
该解决方案不是外部css文件,而是在JSP文件内部使用内部样式表语法,以便能够识别上下文路径。例如,将以下部分嵌入到JSP的“标题”部分中。然后,“ c:url”将正确解析包含上下文的路径。
<style>
@font-face {
....
src: url("<c:url value='/font/myfont-Regular.woff'/>") format('woff');
}
</style>
现在要提高上述内部样式的可重用性,另一个技巧是使用唯一内容高于内部样式的JSP(或JSPF)文件。然后可以在必要时将其包括在内。但是,它必须具有“ .jsp”或“ .jspf”扩展名才能“感知上下文”。