我目前正在实现一个小型Spring MVC PoC,并且我想使用JSF作为视图技术,因为我公司中的大多数人都习惯于带有Primefaces环境的J2EE。
Spring MVC 3是否支持JSF或仅支持JSP?我读过多篇文章,将两者混为一谈。
我需要创建一个吸引人的UI。使用Spring MVC和JSP作为视图技术,是否有一种简单的方法?
我们的应用程序在多个页面中使用时间表/日历。这基本上是一个时间管理APP
你正在犯一个概念上的错误。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一起使用。你可以用@ManagedBeanSpring
托管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将永远不存在),因为你必须根据其文档考虑服务器特定的细节,因此配置方面的工作仅需一点点。例如:Undertow和Jetty。
返回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将基于JSF和Spring MVC的经验教训,提供一个新的基于请求的MVC框架,命名为“ MVC ”,从而取代Spring MVC并提供JSF的标准替代方案。
主要内容:映射Faces ServletFacelets视图是页面。 您可以通过向页面添加组件来创建网页或视图,将组件连接到后端的值和属性,并在组件上注册转换器,验证器或侦听器。 网页作为前端。 您的应用程序的第一页默认为。 网页(如,在中)的第一部分声明页面的内容类型,即XHTML: 一个完整的文件:index.xhtml 代码内容如下所示 - Facelets HTML标签以开头,用于在网页和核心标签上添加组件用于验证用户输入。 标
问题:如果我使用的是SessionScoped bean,代码可以工作,但如果我使用的是ViewScoped bean则不可以。我将System.out.println()添加到代码中,以查看发生了什么。如果我将bean设置为SessionScoped,那么一切都按计划工作。inputText值通过set方法设置,processOrder()方法将“OrderName”字符串添加到“Orders”
我正在使用Glide将图像加载到我的imageView(位于回收视图中): 我看到Glide库还有一个“占位符”函数,它可以在图像仍在加载时加载一个可绘制的图像。 另一方面,对于整个recyclerView,我使用Facebook Shimmer库来显示正在加载recyclerView。 看看我的应用程序,一切正常。但是,在消除微光(提取数据)和显示图像之间仍然存在间隔时间。这正是需要占位符的时候
我在hibernate中从查询中获取信息时遇到问题。在我的类dao中,有这样一个函数。 我将List传递给视图,并在jsp中使用c: foreach查看结果,但我只有像Ljava.lang.对象这样的结果;@1659f66 我在MySQL中的查询是 结果就像 ?如何在视图中获取查询中每列的数据?
问题内容: 我有以下控制器… 我的servlet上下文使用以下值设置… 现在,如果我转到那,我得到的视图就是userManagement.jsp,这正是我想要的… 但是,如果我转到404错误。 我看不到的是为什么会发生这种情况,因为我将requestMapping设置为与上面完全相同,并且在/ WEB-INF / views中我有一个createUser.jsp和userManagement.js