在jsf1.2中使用jquery,或者只在jsp中使用jquery(jstl)

在jsf1.2中使用jquery,或者只在jsp中使用jquery(jstl),jquery,jsp,jsf,Jquery,Jsp,Jsf,关于JSF和jquery有很多技术问题,但这是一个关于对这两种广泛使用的技术做出明确决策的问题。 很明显,jquery和JSF1.2(我总是指JSF1.2)可以一起使用,但是一起使用它们明智吗? 或者最好使用基于jquery的富前端和纯JSP? 此外,在将jsf与jquery结合使用时,是否也需要使用纯jsp? 我希望有经验的开发人员在回答这个关键问题时能够给出一些非常有力的论据。我真的很担心,如果我启动一个jsf/jquery web应用程序,我最终会编写一些jsf/jsp/jquery混合的

关于JSF和jquery有很多技术问题,但这是一个关于对这两种广泛使用的技术做出明确决策的问题。 很明显,jquery和JSF1.2(我总是指JSF1.2)可以一起使用,但是一起使用它们明智吗?
或者最好使用基于jquery的富前端和纯JSP? 此外,在将jsf与jquery结合使用时,是否也需要使用纯jsp? 我希望有经验的开发人员在回答这个关键问题时能够给出一些非常有力的论据。我真的很担心,如果我启动一个jsf/jquery web应用程序,我最终会编写一些jsf/jsp/jquery混合的奇怪代码,这将是一个麻烦,而不是一个干净的java web应用程序

提前谢谢


ps:如果这不是一个纯粹的编程问题,我很抱歉,但我认为在找到所有小的技术细节之前知道这个问题的答案更重要。

jQuery肯定可以与JSF结合。此外,还有一些组件库可以做到这一点,例如和。两者都有JSF1.x目标组件,具有ajaxical功能和丰富的UI(部分)基于jQuery

然而,在JSF Web应用程序中结合自制的jQuery函数确实不是那么简单。您还必须考虑服务器端状态。例如,当您通过纯jQuery显示/隐藏HTML元素时,您还必须在服务器端的JSF组件树中反映该元素,以保持双方同步。否则,webapp可能不会像您预期的那样运行

在继续使用JSF时,我强烈建议只使用基于ajax的组件库,如RichFaces、PrimeFaces或IceFaces。他们已经考虑了所有令人讨厌的JSF ajax集成细节。或者,如果您确实坚持使用jQuery,那么最好使用基于请求的MVC框架,而不是基于组件的MVC框架,如Spring MVC。你只会得到更多的代码

另见:

JSF/JQuery组合的一个有趣的复杂之处是,如果对页面进行任何结构修改,就会遇到困难,即根据一些客户端事件添加表单元素。因为JSF是一个基于组件的框架,所以它期望从页面返回的模型与发送到页面的模型相等

JSF2.x已经为ajax和诸如此类的东西提供了显著改进的支持,但是当您尝试进行富客户端修改时,它仍然可以为“有趣”的编码会话提供帮助

另一个需要考虑的问题是JSF中组件的命名,这使得很难通过id选择元素。您可以在jquery中使用$=来获得一个endsWith匹配,这样您就可以解决它,但它仍然比普通JSP更有趣


JSF确实为您提供了一些丰富的组件库(primefaces等),这些库可以让您完全跳过jquery,仍然可以获得丰富的客户端体验。

我认为primefaces不再支持JSF1。x@Harry:PF 1.x确实不再被维护,但由于OP仅限于旧的JSF 1.2,因此您没有太多选择。我还强烈建议立即查看JSF2.x。这是一项重大改进,并且已经提供了内置的ajax功能。