2011-10-02 117 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標籤更容易。 –