ZK主题和IE行为(.htc)内容类型的问题

时间:2011-04-29 15:04:37

标签: java internet-explorer zk html-components

基本问题:

有没有办法在jar中设置被拉入ZK主题的元素的mime-type(内容类型)?

扩展后台(已发布到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:是核心的名称空间,而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就会事实证明它做了什么。

2 个答案:

答案 0 :(得分:2)

所以我发现了尽可能快速,轻松地满足我需求的解决方法。 基本上,我刚用behavior.htc.dsp文件替换了behavior.htc文件,并将以下行添加到顶部:

<%@ page contentType="text/x-component;charset=UTF-8" %> 

我最初担心的是IE不会因为扩展而将其解析为正确的文件类型,但显然所有它都关心它是标题中的内容类型,所以这很有效。

答案 1 :(得分:1)

您可以提供 c EL 功能来自行手动指定内容类型。 您可以参考this tutorial of Defining Functions