2011-10-02 111 views
1

对于JSF2,使用<h:graphiImage>与正常<img>(就性能而言,例如解析/呈现时间,可能的http缓存(如果有)等)的优点是什么?<h:graphicImage>优于<img>

回答

1

您没有在<img>元素上获得server-sideattributes

+0

你的意思是像“渲染”?这可以通过ui:fragment来实现。没有更特别的东西吗?例如,当所有图像都由单个servlet进行流式传输时,它是否会带来任何优势。 – Mohsen

+0

是的,“渲染”就是这样一个属性。我不确定你在寻找什么“特殊” - 这里没有魔法。 –

0

没有安全和简单的方法来设置src属性的绝对路径。这很重要,因为您可能会从驻留在不同目录中的多个页面引用相同的图像。你想要保持相对位置的麻烦吗?当然,您可以使用<img src="#{resource['images:myImage.png']}"/>来获得安全的绝对路径。难道使用<h:graphicImage name="myImage.png" library="images"/>更简单吗?

什么是“安全”绝对路径?

您可以将您的图像保留在通常的资源文件夹之外,并将它们指定为绝对路径,例如:<img src="/myApp-web/faces/images/myImage.png"/>,那就行了。但是,当你想部署你的应用程序会发生什么?你想让你的网址像http://www.mysite.com/faces/myPage.xhtml?当然不是。您想要将上下文根设置为服务器根目录。但是,您不希望为生产部署更改所有img标记,也不希望发生一些涉及从应用程序范围的bean获取基本URL的黑客攻击,并希望您记得更改生产部署的属性。所以你最好还是使用<img src="#{resource['images:myImage.png']}"/>或者更容易记住<h:graphicImage name="myImage.png" library="images"/>

+1

你总是可以在图像src之前放置上下文根目录:''这既安全又简单。 – Mohsen

+0

啊,是的,没有想到,这是奇怪的,因为我自己做过一次。不过我认为使用没有EL的图像组件比使用EL的img标签更容易。 –