假設我沒有利用OGNL來創建我的Struts2 Web應用程序,而只是純粹使用Sun提供的典型EL。它的缺點是什麼?OGNL在Struts2中與典型EL相比的優勢
據我所知,OGNL是一種表達的,它試圖匹配來自ValueStack中基於其當前狀態下的最佳匹配值。也可以通過單獨使用EL來實現嗎?
在此先感謝您的答覆
丹尼爾
假設我沒有利用OGNL來創建我的Struts2 Web應用程序,而只是純粹使用Sun提供的典型EL。它的缺點是什麼?OGNL在Struts2中與典型EL相比的優勢
據我所知,OGNL是一種表達的,它試圖匹配來自ValueStack中基於其當前狀態下的最佳匹配值。也可以通過單獨使用EL來實現嗎?
在此先感謝您的答覆
丹尼爾
答案很簡單:是的,你可以使用JSP EL代替OGNL。這兩種語言都有其優點和缺點,但使用兩種語言都不存在任何缺點。
龍答: OGNL由XWork之上和Struts2的內部使用,所以你不能真正去除依賴本身,但是你可以肯定在你的JSP視圖層主要(甚至是唯一的)使用JSP EL。
使用任一表達式語言都有優點和缺點。 OGNL在JSP EL上發揮的一個領域是動態創建地圖和集合,例如用於支持<select/>
元素等。
但是,在大多數情況下,我發現JSP EL更適合我,因爲我大量使用JSP簡單標籤(.tag
文件)。
@Amit夏爾馬:我不同意,使用JSP/JSTL在OGNL和Struts標籤違背了使用Struts2的目的。攔截器框架,類型轉換和結果類型是使用Struts2最具擴展性和令人信服的理由之一。這些東西都與任何特定的視圖技術無關。
我不認爲這是可能的,即使你選擇不使用OGNL與struts2的web應用程序做。 OGNL由struts2在內部用於數據傳輸和類型轉換。如果你打算使用struts2,你將不得不使用OGNL,如果你不這樣做,struts2會自動完成。
儘管您可能會遺漏OGNL並使用純EL,但這樣使用struts2的全部目的就會被擊敗,因爲如果您不使用struts2的內置功能,您可能會從頭開始編寫這些機制EL。
雖然這看起來有些奇怪起初,但OGNL是相當強大的,值得在Struts2開發時考慮。