为了账号安全,请及时绑定邮箱和手机立即绑定

使用JSF作为SpringMVC的视图技术

/ 猿问

使用JSF作为SpringMVC的视图技术

春华秋衣 2019-06-24 16:39:39

使用JSF作为SpringMVC的视图技术

我目前正在实现一个小型SpringMVC PoC,我希望使用JSF作为视图技术,因为我的公司中大多数人都习惯于使用带有PrimeFaces环境的J2EE。

SpringMVC 3支持JSF还是简单的JSP?我读过多篇文章,把这两者混为一谈。

我的需求是创建一个吸引人的UI。是否有一种简单的方法可以使用SpringMVC和JSP作为视图技术?

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


查看完整描述

3 回答

?
翻过高山走不出你

你犯了一个概念上的错误。JSF不是一种视图技术。JSF是一个MVC框架。与SpringMVC完全一样,尽管它们都有不同的思想;JSF是基于组件的MVC,SpringMVC是基于请求的MVC。因此,他们是完全的竞争对手。你不能把它们混在一起。你应该选择一个还是另一个。相反,JSP和Facelets是真正的视图技术。自从JavaEE 6(2009年12月)以来,JSP是弃用作为JSF的默认视图技术,由Facelets(XHTML)代替。

您可以使用SpringMVCJSP视图技术..您还可以使用SpringMVC与Facelets视图技术(和其他许多)。但是,您不能在JSF组件中使用SpringMVC,更不用说像PrimeFaces这样的JSF组件库了。JSF输出组件可以工作,但是JSF输入组件根本不能工作。SpringMVC已经有了自己的<form:xxx>输入标签。即使将它们混合在一起,您也将在混合的和令人困惑的代码库中获得这两个框架的一半功能。这没有任何意义。如果您只想使用与PrimeFaces相同的UI,只需抓取jQueryUI..它也正是PrimeFaces在封面下使用的。PrimeFaces是一个基于jQuery的JSF组件库。

从另一方面来看,将SpringIoC/DI与SpringMVC混为一谈也是非常好的。Spring IoC/DI依次可用和JSF一起。您可以替换JSF托管bean工具(@ManagedBean以及朋友)由Spring管理的bean设施(@Component和朋友),通常只有一个目的@Autowired在JSF支持bean中。但仅此而已。JSFMVC框架生命周期、JSF组件和视图技术保持不变。与此等效的标准JavaEE将使用CDI(和EJB).

SpringSecurity也是如此。您可以将它与JSF一起使用,但是您不应该遵循SpringSecurity+SpringMVC目标文档/示例来配置它,而应该只使用SpringSecurity+JSF文档/示例。请注意,业务操作上的SpringSecurity约束只有在您用SpringManagedbean工具替换JSF托管bean工具时才有效。因此,正如上一段所述,这仍然需要一个“JSF中的集成Spring”。与此等效的标准JavaEE将使用集装箱管理安全(JAAS/JASPIC)<security-constraint>web.xml.

同样的故事也适用于SpringWebFlow。您也只需要确保使用最新版本的SpringWebFlow作为旧版本的原因冲突当与多个JSF组件库一起使用时。此外,自JSF2.2以来,新的面流特性是作为标准JavaEEAPI的一部分引入的,因此基本上使SpringWebFlow变得多余。

还有春靴。这在JavaEE中没有直接的等效项。Spring Boot基本上使您能够使用普通Java应用程序类执行JavaEE应用程序,main()方法“以一种简单而抽象的方式”。如果没有SpringBoot,这当然是可能的(否则SpringBoot根本就不存在),在配置方面只需做一些更多的工作,因为您必须根据它的文档考虑到特定于服务器的细节。例如:下引码头.

回到JSF和SpringMVC,如果真的有必要的话,您可以在同一个Web应用程序中安全地运行SpringMVC和JSF,但是它们不会在服务器端互操作。他们将完全独立运行。如果JSF生成的HTML页面中的一些JavaScript碰巧在同一个Web应用程序中调用基于Spring的REST Web服务调用,它们最多只能在客户端相互接触。但是,那样的话,SpringWeb服务就不需要/必须知道任何关于JSF的信息才能做出相应的响应。与SpringRESTwebservice等效的标准JavaEE是贾克斯-RS.

即将发布的JavaEE 8将提供一个新的基于请求的MVC框架,命名为“MVC“,基于JSF和SpringMVC的经验教训,在此取代SpringMVC并提供JSF的标准替代方案。

另见:


查看完整回答
反对 回复 2019-06-24
?
慕盖茨1488219

SpringMVC和JSF并不是真正的混合。您可以将JSF用于视图相关的内容,并让Spring管理和连接后台(服务、DAOS等)。但是,尝试将@控制器与JSF页面匹配并不是真正能很好地工作的东西(其次是基于组件的不同的堆栈请求)。

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


查看完整回答
反对 回复 2019-06-24
?
MMTTMM

Spring Webflow在这里可以提供帮助。查看这个示例项目。https:/github.com/Spring-Projects/Spring-webflow-Sample/tree/master/primeFaces-展示


查看完整回答
反对 回复 2019-06-24

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信