基本问题:
有没有办法在 jar 中设置被拉入 ZK 主题的元素的 mime 类型(内容类型)?
扩展背景(已经发布到 ZK 论坛没有回应)
我们正在为我们的应用程序构建一个主题 .jar,并且我已经使用 zkTheme.bat 让一切正常工作。然而,我遇到的问题是我们使用 PIE.htc ( http://www.css3pie.com ) 为 IE 7 和 IE 8 提供 CSS3 功能(特别是圆角、渐变和框-阴影)。将其链接到主题中的唯一方法是将其指向 jar 中的相关资源,如下所示:
behavior:url(${c:encodeURL(c:cat3('~./',project,'/PIE.htc'))});
其中 c: 是 core 的命名空间,project 是项目的根目录。这指向正确的文件资源,但未正确设置标头。对文件执行 wget,我们得到以下信息:
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Last-Modified: Thu, 28 Apr 2011 12:36:54 GMT
Cache-Control: public, max-age=31536000
Expires: Fri, 27 Apr 2012 12:36:07 GMT
Content-Type: ;charset=UTF-8
Content-Language: en-US
Content-Length: 28284
Date: Thu, 28 Apr 2011 14:08:23 GMT
Connection: keep-alive
Length: 28284 (28K) []
如您所见,内容类型为空白。这可能是因为 .jar 中提供的大多数文件是图像资源,而不是行为文件。如果我们只获取文件本身,这就是我们得到的。
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"28280-1299679133268"
Last-Modified: Wed, 09 Mar 2011 13:58:53 GMT
Content-Type: text/x-component
Content-Length: 28280
Date: Thu, 28 Apr 2011 14:10:34 GMT
Connection: keep-alive
Length: 28280 (28K) [text/x-component]
所以根本问题是 Internet Explorer 看不到“text/x-component”的内容类型标头,因此没有利用 .htc 中的代码正确解析 CSS。因此,我的问题是:有没有办法让 zk 从 .jar 提供这个文件作为正确的内容类型?环顾四周,我看不出有什么办法。此外,我找不到支持从theme.jar 中提取的底层代码,以便更改代码以找出此内容类型。我意识到我可以将 PIE.htc 放在网络服务器上的某个地方,然后将其指向主题 jar 之外,但这会使这段代码的可移植性大大降低,因此完全消除了我们使用主题 jar 的逻辑的相当一部分。
请注意:我们在 Tomcat 上提供这个服务,我已经检查了 web.xml 以确保 text/x-component 已绑定,它是(显然是这种情况,否则第二个 wget 不会有原来它做了什么)。