没有JSF的Facelets

我正在学习Java语言并期待编写非常小的Web应用程序,因为Facelets似乎是JSP的替代品,并且JSF对于小型Web应用程序来说似乎有些过分,我是否可以学习Facelets并在没有整个JSF堆栈的情况下使用它? 或者我应该使用JSP来获取这些小型网络应用程序?

可以在没有JSF的情况下使用。 只需将FacesServlet映射到web.xml*.xhtml的URL模式, 不要声明

 xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" 

在任何Facelet模板中。 声明它们实际上并没有坏处,但这样你就不会“意外地”使用它们。 您可以在其中编写纯HTML,并将表单提交给普通的servlet,并将servlet转发/重定向到Facelet。

您只需要记住,使用servlet,您最终会获得更多的样板代码,用于收集请求参数,转换/validation它们,维护和更新模型值,调用业务操作,而所有这些重复的样板代码都是不必要的。使用一个完整的JSF托管bean。

此外,您不能将Facelets与基于请求的MVC框架一起使用,这些框架只有JSP标记库可用,如Struts,Spring MVC等。

Facelets是为了满足JSF的需要而开发的,因此依赖于JSF。 如果您需要对JSP进行模板化,只需使用<@import>或更高级的库作为Apache Tiles 。