为什么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
提交
取消