(A11)Tapestry Core:Assets

本文翻译出处 http://tapestry.apache.org/tapestry5/tapestry-core/guide/assets.html

本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。

chinajavawolf

Asset(是一些web应用中用到的资源,如图象,视频等)
除了动态产生的 HTML 以外, Assets 还可以是任何从客户端浏览器下载的文件, .
Assets 通常是 images stylesheets JavasScript 库。
一般 Assets 被存放在 web 应用的上下文文件夹内。。。通常方法存放在web应用的war文件内。
Tapestry 也将使文件存放在 classpath 上,和你的 java 类文件,对 web 浏览器可见。
Assets 作为Asset接口的实例暴露给你的代码。
注入 Assets
组件通过注入得知 assets Inject 标注允许 Assets 被当作只读属性注入到组件中。资源路径通过使用 Path 标注制定。
  1. @Inject  
  2. @Path("context:images/tapestry_banner.gif")   
  3. private Asset _banner;  
Assets 被定位在域里。这些域通过 Inject 标注值的前缀确定。
如果省略前缀, value 值将被认为是相对 Java 类文件自身的路径,在 ”classpath:” 域内。这常被用来创建组件库, Assets 使用的是自身被打包在 JAR 内的组件。
不像 Tapestry 的其他应用,这里区分大小写。这是因为 Tapestry 依靠 Servlet API Java 运行时访问潜在文件,并且那些 APIs ,不像 Tapestry 的,是区分大小写的。对某些操作系统 ( Windows) 是不区分大小写的,这样在部署应用的时候可能会带来错误(如果部署的操作系统是区分大小写的,比如 Linux )。
相对路径的 Assets
你可以使用域的相对路径(如果你省略了前缀)
  1. @Inject  
  2. @Path("../edit.png")   
  3. private Asset _icon;  
只有对打包在库内的组件进行重用,省略前缀是有意义的。
符号对于 Assets
在标注值中的符号被扩展。这允许你可以定义一个符号并关联他作为路径的一部分。例如,你可以提供一个名为 ”skin.root” 的符号作为 ”context:/skins/basic” ,然后从中关联一个 assset.
  1. @Inject  
  2. @Path("${skin.root}/style.css")   
  3. private Asset _style;  
替换 skin.root 符号将影响所有关联该名的 assset.
Asssets 本地化
Assets 可以本地化; Tapestry 将查找一个变化的文件以符合请求的区域。在前面的例子中,应用中的一个德国用户将看到的是个名为 edit_de.png 文件(如果存在这样的一个文件)。
新的 Asset
如果你希望位 asssets 创建一个新的域。例如,允许 assets 被存储在文件系统或者在数据库里。你可以定义一个新的 AssetFactory 然后提供它给 tapestry.AssetSource 服务配置。
简化路径
私有的 assets(classpath 上的 assets) 通常有这样的形式 : /assets/foo/bar/Baz.css Baz.css 是一个在foo.bar包里的文件。 换句话说,包名被转换成虚拟文件夹下的路径。
你可以控制这些,允许简写路径。 ClasspathAssetAliasManager 服务有一个映射配置。映射的 key 值是一个合理的文件夹名,映射的 value 值是一个完整的路径。例如, Tapestry 自己做了这样的配置。
  1. public static void contributeClasspathAssetAliasManager(   
  2.         MappedConfiguration configuration)   
  3. {   
  4.     configuration.add("tapestry/""org/apache/tapestry/");   
  5. }  
这样,产生的
URLs 应该是 /assets/tapestry/Foo.gif, 但是潜在的文件将是/org/apache/tapestry/Foo.gif
应小心不要造成重叠的映射,因为结果不会是可预见的.

你可能感兴趣的:(apache,应用服务器,Web,css,tapestry)