使用JSF作为Spring MVC的视图技术

Ast*_*aut 64 jsf spring jsp spring-mvc primefaces

我目前正在实现一个小型的Spring MVC PoC,我想使用JSF作为视图技术,因为我公司的大多数人习惯于使用Primefaces环境的J2EE.

Spring MVC 3是支持JSF,还是只支持JSP?我已经阅读了两篇混合两篇的文章.

我需要创建一个吸引人的UI.有没有一种简单的方法来使用Spring MVC和JSP作为视图技术?

我们的应用程序在多页中使用计划/日历.它基本上是一个时间管理APP

Bal*_*usC 152

你犯了一个概念上的错误.JSF不是一种视图技术.JSF是一个MVC框架.完全像Spring MVC一样,尽管他们都有不同的意识形态; JSF是基于组件的MVC,而Spring MVC是基于请求的MVC.因此他们是完全竞争者.你不能混合它们.你应该选择其中一个.相反,JSP和Facelets是真正的视图技术.自Java EE 6(2009年12月)以来,不推荐使用 JSP并被Facelets(XHTML)取代为JSF的默认视图技术.

您可以将Spring MVC与JSP视图技术结合使用.您还可以将Spring MVC与Facelets视图技术(以及许多其他技术)一起使用.但是你不能将Spring MVC与JSF组件一起使用,更不用说像PrimeFaces这样的JSF组件库.JSF输出组件可能有效,但JSF输入组件根本不起作用.Spring MVC已经有了自己<form:xxx>的输入标签.即使你混合使用它们,你也会在混合和混乱的代码库中得到两个框架的一半功能.这没有任何意义.如果你想要的是使用与PrimeFaces相同的UI,只需抓住jQuery UI.这也正是PrimeFaces在幕后使用的.PrimeFaces是一个基于jQuery的JSF组件库.

从另一方面来看,将Spring IoC/DI与Spring MVC混为一谈也是非常好的.Spring IoC/DI又可以与JSF一起使用.您可以@ManagedBean通过Spring托管bean工具(@Component和朋友)替换JSF托管bean工具(和朋友),通常仅用于@Autowired在JSF支持bean中使用.但就是这样.JSF MVC框架生命周期,JSF组件和视图技术保持不变.与之类似的标准Java EE将使用CDI(和EJB).

同样的故事也适用于Spring Security.您可以将它与JSF一起使用,但是您应该不遵循Spring Security + Spring MVC目标文档/示例来配置它,而只需要Spring Security + JSF.请注意,只有在Spring托管bean工具替换JSF托管bean工具时,Spring Security对业务操作的约束才有效.因此,如前一段所述,仍然需要"在JSF中集成Spring".这个标准的Java EE等价物将通过条目使用容器管理安全性(JAAS/JASPIC)<security-constraint>web.xml.

同样的故事也适用于Spring WebFlow.您还需要确保使用最新版本的Spring WebFlow,因为旧版本与多个JSF组件库一起使用时会导致冲突.此外,由于JSF 2.2,新的Faces Flows功能是作为标准Java EE API的一部分引入的,因此基本上使Spring WebFlow变得多余.

然后就是Spring Boot.这在Java EE中没有直接的等价物.Spring Boot基本上使您能够使用普通Java应用程序类以main()"简单和抽象的方式" 执行Java EE应用程序.如果没有Spring Boot,它肯定是可能的(否则Spring Boot永远不会存在),配置只需要更多工作,因为您必须根据其文档考虑特定于服务器的详细信息.例如:UndertowJetty.

回到JSF和Spring MVC,如果真的有必要,你可以在同一个Web应用程序中安全地运行Spring MVC和JSF,但它们不会在服务器端互操作.它们将完全独立运行.如果JSF生成的HTML页面中的某些JavaScript碰巧在同一个Web应用程序中调用基于Spring的REST Web服务调用,那么它们在客户端最多会相互接触.但是,Spring Web服务不需要/必须知道有关JSF的任何信息,以便做出相应的响应.该Spring REST Web服务的标准Java EE等价物是JAX-RS.

即将推出的Java EE 8将带有一个基于新请求的MVC框架,名为" MVC" ",基于JSF和Spring MVC的教训,因此取代了Spring MVC并提供了JSF的标准替代方案.

也可以看看:

  • 好吧,你已经有专家意见了:) (4认同)
  • 对不起,我不能.我对你一无所知.只需选择您认为/感觉最适合您自己的知识,具体功能要求和时间/截止日期等等.如果是我,我会选择JSF并在一周内做好准备.出于这个非常简单的原因,因为我从未真正使用过Spring + Spring MVC,需要数月才能正确地学习/掌握它.你的情况当然不同.您不能向别人询问个人/主观问题,您可以自己回答最好的问题.顺便说一下,Stack Overflow是一个提出意见的错误地方. (3认同)

M. *_*num 14

Spring MVC和JSF并没有真正混合.您可以将JSF用于视图相关的东西,并让Spring管理并连接支持(服务,daos等).但是尝试将@Controllers与JSF页面匹配并不是真正有效的(接下来两者都是基于组件的不同堆栈请求).

要将Spring与JSF集成,您需要将其添加SpringBeanFacesELResolver到faces-config.xml.这将从Springs应用程序上下文中查找bean.为此,您必须使用普通的JSF注释而不是基于CDI的注释.


归档时间:

查看次数:

39880 次

最近记录:

7 年,6 月 前