关于JSF和jquery有很多技术问题,但这是一个关于对这两种广泛使用的技术做出明确决定的问题。很明显,jquery和JSF 1.2(我总是指JSF 1.2)可以一起使用,但将它们一起使用明智吗
或者,使用一个具有纯JSP的基于富jquery的前端会更好?此外,当将jsf与jquery一起使用时,是否也需要使用纯jsp?我希望有经验的开发人员在回答这个关键问题时能给出一些非常有力的论据。我真的很担心,如果我启动一个jsf/jquery web应用程序,我最终会编写一些jsf/jsp/jquery的混合奇怪代码,这将是一个很大的麻烦,而不是一个干净的java web应用程序。
提前谢谢。
ps:如果这不是一个纯粹的编程问题,我很抱歉,但我认为在找到所有小的技术细节之前,知道答案更重要。
jQuery肯定可以与JSF相结合。更重要的是,有一些组件库可以做到这一点,比如RichFaces和PrimeFaces。两者都有以JSF 1.x为目标的组件,具有ajaxical功能和丰富的UI,这些组件(部分)基于jQuery。
然而,在JSF Web应用程序中组合自制的jQuery函数确实不是一件小事。您还必须考虑服务器端的状态。例如,当您通过纯jQuery显示/隐藏HTML元素时,您必须在服务器端的JSF组件树中反映这一点,以保持双方的同步。否则,网络应用程序可能不会像您预期的那样运行。
在继续使用JSF时,我强烈建议您只使用基于ajax的组件库,如RichFaces、PrimeFaces或IceFaces。他们已经考虑到了所有令人讨厌的JSF ajax集成细节。或者,当你真的坚持在家使用jQuery时,最好使用基于请求的MVC框架,而不是基于组件的MVC框架(如Spring MVC)。你只会得到更多的代码。
另请参阅:
- 当用户界面可以通过CSS、HTML、JavaScript和jQuery实现时,JSF的需求是什么
- 为jQuery选择哪个Java web框架
JSF/JQuery组合的有趣复杂性在于,如果您对页面进行任何结构修改,您可能会遇到困难,即根据某些客户端事件添加表单元素。因为JSF是一个基于组件的框架,所以它希望从页面返回的模型与发送到页面的模型相等。
JSF 2.x为ajax和whatnot提供了显著改进的支持,但当您尝试进行富客户端修改时,它仍然可以创建"有趣"的编码会话。
另一个考虑因素是JSF中组件的命名,这使得很难根据id选择元素。您可以在jquery中使用$=来获得endsWith匹配,这样您就可以绕过它,但它仍然比普通JSP更有趣。
JSF确实为您提供了一些丰富的组件库(primefaces等),这些库可以让您完全跳过jquery,仍然可以获得丰富的客户端体验。