為什么Facelets作為JSF2.0以后的視圖定義語言比JSP更受歡迎?我從JSF2.0開始看到,Facelets視圖定義語言是首選的視圖定義語言,而不是作為遺留后退而被棄用的JSP。我想理解為什么Facelets比JSF2.0以后的視圖定義語言更優先于JSP?我知道JSP也有一些模板行為,這是采用Facelets的主要驅動點。PS:我在stackoverflow上經歷過這篇文章,但我不認為它回答了我的問題。因此將此作為單獨的問題發布。
2 回答

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
確實,JSP具有一些 模板功能,但在JSF中使用JSP的最大缺點是JSP在遇到模板文本內容時立即寫入響應,而JSF希望使用它進行一些前/后處理。在JSF 1.0 / 1.1中有以下JSF代碼
<h:outputText value="first"> second <h:outputText value="third"> fourth
會產生
第二名第四名
這是在JSF 1.0 / 1.1期間頭疼的問題。開發人員將需要包裝模板文本一樣second
,并fourth
在上面的例子<f:verbatim>
在所有地方的標簽。JSF 1.2已經通過一個改進的視圖處理程序來解決它,該處理程序解析JSP而不是執行它,但由于JSP語法不像XML那樣“格式良好”,因此它仍然非常笨拙。強烈需要基于XML的視圖技術,以便可以使用基于SAX的高效解析器。Facelets誕生了(在Ken Paulsen的“JSFTemplating”中)。
此外,統一的EL #{}
不能在JSP模板文本中使用,導致丑陋 - 并且對于初學者而言不直觀 - 混合${}
和#{}
。此外,JSTL可以在JSP上的JSF 1.x中不能用作視圖構建時間標記。此外,帶有<% %>
東西的JSP語法是老派,在JSP中嵌入原始Java代碼的可能性被認為是打破MVC意識形態的一種非常糟糕的做法。
總而言之,從JSF / MVC的角度來看,JSP簡直是丑陋而且非常糟糕,Facelets簡直干凈且令人敬畏。
添加回答
舉報
0/150
提交
取消