许多资源依赖于地域(locale),有时依赖于用户用于访问Web页面的浏览器。例如,你需要为汉字显示大字体,以获得更好的可读性。
若你使用"*"指定了样式表的URL,ZK可以为你自动处理这些。算法(algorithm)如下。
若在一个URI内指定了"*",例如/my*.css
,那么"*"将会被一个合适的地域(Locale)代替,在浏览器的首选项内指定。
例如,用户的首选项为de_DE
,那么ZK将会从你的Web站点依次查找/my_de_DE.css
, /my_de.css
,和 /my.css
,直到任一个被找到。若没有找到,则仍然使用/my.css
。
若在一个URI 内指定了两个或更多的"*",例如"/my*/lang*.css"
,那么首个"*",对于IE会被"ie
"代替,Safari为"saf
",而其它浏览器[63]为"moz
" 。此外,最后一个星号(asterisk)会被一个合适的地域(Locale) 代替,就像上一布描述的那样。综上所述,最后一个星号(the last asterisk)表示地域(Locale),而第一个星号表示浏览器类型。
所有其它的 "*" 会被忽略。
[注]: 表示地域(Locale)的最后那个星号必须被放置于首个点(".")之前且中间无任何字符,或若没有点则置于最后。另外,下列的斜杠是不允许的(no following slash (/) is allowed),也就是说,它必须为文件名,而不是目录。若最后一个星号不满足此约束,它就会被除去(eliminated)(而不是忽略)。
例如,"/my/lang.css*"等价于"/my/lang.css"。
换言之,你可以认为它是中立于地域的(you can consider it as neutral to the Locale)。
[提示]: 我们可以将此规则应用于指定一个依赖于浏览器类型的 URI,而不是依赖于地域(Locale)。例如,若用户使用的为IE,则"/my/langie.css"会代替"/my/lang*.css*"。
在下面的例子中,我们假定选中的地域(Locale)为de_DE
,且浏览器为IE。
URI |
被搜索的资源 |
---|---|
/css/norm*.css |
|
/css-*/norm*.css |
|
/img*/pic*/lang*.png |
|
/img*/lang.gif |
|
/img/lang*.gif* |
|
/img*/lang*.gif* |
|
除了组件属性和ZUML属性,你可以使用Java编程来处理浏览器和本地资源。这里为你可以使用的方法列表。
org.zkoss.zk.ui.Exection
中的encodeURL
,
forward
和include
方法,分别用于编码URL,转向另一个页面,及包含一个页面。在大多数情况下,这些方法可以满足你的需求。
org.zkoss.web.servlet.Servlets
中的locate
,
forward
,和include
方法,用于定位Web资源。当开发ZK应用程序时,你很少需要它们,但是对于编写servlet,portlet 或 filter 是很有用的。
org.zkoss.web.servlet.http.Encodes
中 encodeURL
的方法,用于编码URL。当开发ZK应用程序时,你很少需要它们,但是对于编写servlet,portlet 或 filter 是很有用的 。
org.zkoss.util.resource.Locators
中的locate
方法,用于定位类资源。