- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我目前正在实现一个小的 Spring MVC PoC,我想使用 JSF 作为 View 技术,因为我公司的大多数人都习惯了带有 Primefaces 环境的 J2EE。
Spring MVC 3 支持 JSF 还是简单的 JSP?我已经阅读了多篇文章,将两者混合在一起。
我的需要是创建一个吸引人的用户界面。有没有一种简单的方法可以使用 Spring MVC 和 JSP 作为 View 技术来做到这一点?
我们的应用程序在多个页面中使用时间表/日历。它基本上是一个时间管理APP
最佳答案
你犯了一个概念上的错误。 JSF 不是 View 技术。 JSF 是一个 MVC 框架。与 Spring MVC 完全一样,尽管它们具有不同的意识形态; JSF 是基于组件的 MVC,而 Spring MVC 是基于请求的 MVC。因此他们是完全的竞争者。你不能混合它们。您应该选择其中之一。相反,JSP 和 Facelets 是真正的 View 技术。从 Java EE 6(2009 年 12 月)开始,JSP 是 deprecated并被 Facelets (XHTML) 取代为 JSF 的默认 View 技术。
您可以通过 JSP view technology 使用 Spring MVC .您还可以通过 Facelets view technology 使用 Spring MVC (和 many others )。但是你不能将 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 依次是 usable与 JSF 一起。您可以将 JSF 管理的 bean 设施(@ManagedBean
和 friend )替换为 Spring 管理的 bean 设施(@Component
和 friend ),通常只有一个目的是为了使用 @Autowired
在 JSF 支持 bean 中。但就是这样。 JSF MVC 框架生命周期、JSF 组件和 View 技术保持不变。标准的 Java EE 等效项将使用 CDI (和 EJB )。
同样的故事也适用于 Spring Security。您可以将它与 JSF 一起使用,但是您不应该遵循 Spring Security + Spring MVC 目标文档/示例来配置它,而只能遵循 Spring Security + JSF 的文档/示例。请注意,Spring Security 对业务操作的约束仅在您用 Spring 管理的 bean 设施替换 JSF 管理的 bean 设施时才有效。所以这仍然需要“在 JSF 中集成 Spring”,如前一段所述。标准 Java EE 等价物将使用 container managed security (JAAS/JASPIC) 通过 <security-constraint>
web.xml
中的条目.
同样的故事也适用于 Spring WebFlow。您还只需要确保您使用的是最新版本的 Spring WebFlow,因为旧版本会导致 conflicts与多个 JSF 组件库一起使用时。此外,从 JSF 2.2 开始,新的 Faces Flows特性是作为标准 Java EE API 的一部分引入的,因此基本上使 Spring WebFlow 变得多余。
然后是 Spring Boot。这在 Java EE 中没有直接的等价物。 Spring Boot 基本上允许您使用带有 main()
的普通 Java 应用程序类来执行 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 将带有一个新的基于请求的 MVC 框架,名为“MVC”,基于 JSF 和 Spring MVC 的经验教训,从而取代 Spring MVC 并提供 JSF 的标准替代方案。
也可以看看:
关于spring - 使用 JSF 作为 Spring MVC 的 View 技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18744910/
原谅那个疯狂的标题... 我试图理解面向对象编程中继承与接口(interface)的概念。所以我试图将它与我已经知道的东西联系起来,这就是 CSS。 在 CSS 中,您可以选择在允许元素“继承”样式的
我有一个 C 函数,它返回一个表示二进制数据的 unsigned char*。我在文档中注意到 SWIG 有一个很好的类型映射来处理二进制数据作为 C 函数的输入,但是当 C 函数返回二进制数据及其无
过去遇到过几次类似的问题,想知道用什么语言(方法)来解决类似的问题(我是J2EE/java开发人员): 问题:在一组可能的单词中,根据给定的规则(假设单词可以是 A 和 X 的组合,并且始终以 X 开
这个问题不太可能帮助任何 future 的访客;它只与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the
如果我们已经开发了自己的ORM框架并且该框架在过去的几年中运行良好,那么为什么我们要为即将到来的软件项目学习和使用全新的.net技术,例如LINQ或Entity Framework或NHibernat
即使听起来很奇怪,我相信每个人在处理具有大量自定义组件的大型应用程序时都遇到过此类问题。某个地方生成了 AV,但应用程序仍在继续执行,稍后会出现错误。我不是在谈论多线程应用程序。只是关于通用的单线程应
我正在设计一个新项目,我正在尝试找出将数据/事件从服务器应用程序推送到客户端应用程序(即 WPF 应用程序)的方法。 我知道的两个是: 发布/订阅(即 NServiceBus) Full Duplex
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
这个问题在这里已经有了答案: C# .NET: How to check if we're running on battery? (6 个答案) 关闭 9 年前。 我发现许多 API 可以帮助确定
没有 JQUERY!我有一个下拉列表,用户可以在其中选择日期、月份和年份。我创建以下代码并使用 setFullYear 将这些值传递到变量中。有时我还会向这个变量添加天数,这就是变量 ev_num 的
我有一个控件,我想在表单和打印时以不同的方式绘制它。这是我做的方式: private void printDocument1_PrintPage(object sender, System.Drawi
我正在尝试确定从扫描文档中提取手写数据的最佳方法。 手写数据位于特定的方框区域。我生成了文档的数字版本,因此我知道方框区域的坐标,并且如果需要还可以生成文档的其他变体(即被屏蔽以使字段更容易提取的版本
背景 对于基于音乐的问题,我深表歉意,但细节并没有那么重要。我正在按顺序浏览一个 midi 文件,我正在寻找一种有效的方法来查找数据中的模式以找到称为连音符的东西。见下图: 连音符上方有数字(3 或
经验丰富的 Java 新手,寻求您的智慧: 如果无法确保在对象超出范围时执行某些特定的 block 代码,那么还有哪些其他方法可以提供相同的功能?(看起来 finalize 显然不是那个意思) 一个典
我正在玩一个小的油漆应用程序。我想创建不同的画笔提示(不仅仅是简单的线条)。基本思想是沿着鼠标移动重复(冲压)画笔 Nib 。因为鼠标移动不会为鼠标移动的每个像素分派(dispatch)所需的事件。我
我正在制作时间表应用程序。重要的类是: Period id: int clazz: Clazz SubjectTeacher subject: String teac
关闭。这个问题需要更多 focused .它目前不接受答案。 想要改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this q
我有一个奇怪的任务要解决。我们有一个小型视频窗口(如 300x200 像素,256 色调色板)和 44kHz 2ch 声音在服务器上播放。我们需要将此流视频发送给一些客户端(1,2.. 最多 10 个
我很确定我在这里遗漏了一些东西,因为我对 Shapeless 还很陌生并且我正在学习,但是 Aux 技术实际上什么时候开始需要 ?我看到它是用来暴露一个 type通过将其提升为另一个“同伴”的签名来声
微软有什么理由仍然坚持使用 COM 技术(Office 组件仍然是 COM)……当所有用 COM 完成的事情都可以用 .Net 以更好、更有效的方式完成时 最佳答案 因为它需要一个 长完全重写Offi
我是一名优秀的程序员,十分优秀!