Ool*_*ong 1 resources jsf specifications el
在JSF页面中,我使用EL来查找放在/resource/images/文件夹中的图像.
<h:graphicImage value="#{resource['images:logo.gif']}"
Run Code Online (Sandbox Code Playgroud)
EL如何定位图像?也许规范定义了规则,但我不知道哪个规范.我尝试在JSR-000344 JavaServer Faces 2.2,JSR-000342 Java平台,企业版7,JSR-000341表达式语言3.0中找到它,但没找到.
在JSF 2.0规范中,它在第2.6.2章中首次提到:
2.6.2渲染资源
图像,样式表和脚本等资源使用第2.6.1节"打包资源"中概述的资源处理机制.所以,例如:
Run Code Online (Sandbox Code Playgroud)<h:graphicImage name=”Planets.gif” library=”images”/> <h:graphicImage value=”#{resource[‘images:Planets.gif’]}”/>这些条目呈现完全相同的标记.除了使用
name和library属性之外,样式表和脚本资源可以"重定位"到视图的其他部分.例如,我们可以指定在页面中的HTML"head","body"或"form"元素内呈现脚本资源.
然后在第5.6.2.5章:
5.6.2.5资源ELResolver
此解析器是一种将
Resource实例编码为面部请求的方法,以便使用ResourceHandler满足来自浏览器的后续面部资源请求,如第2.6节"资源处理"中所述.ELResolver方法实现要求
如果base和property不为null,并且base是一个实例
ResourceHandler(如表达式的情况那样#{resource[‘ajax.js’]},请执行以下操作.(注意:由于ImplicitObjectELResolver返回ResourceHandler,这是可能的 ,请参见第5.6.2.1节"隐式对象用于Facelets和程序访问的ELResolver")
- 如果property不包含冒号字符':',则将property作为
resourceName和传递属性ResourceHandler.createResource(resourceName).- 如果属性包含单个冒号字符':',则将':'之前的内容视为'
libraryName和'之后的内容resourceName,并将两者都传递给ResourceHandler.createResource(resourceName, libraryName)- 如果property包含多个冒号字符':',则抛出一个本地化的
ELException包含属性.如果上述步骤之一导致创建非null
Resource实例,则调用ELContext.setPropertyResolved(true)并返回在实例 上调用getRequestPath()方法的结果Resource.
在JSF 2.1和2.2规范的相同章节中也提到了它.
与具体问题无关,images是资源库名称的一个非常糟糕的例子.不要从规范示例中接管它.