背景
我打算用java开发一个新的web应用程序。它不是很大也不是很复杂,我有足够的时间“正式”开始。
我有一些 JSF/Facelets 开发背景(大约半年)。而且我对 JSP+JSTL 也有一些经验。
出于自我教育的目的(也为了找到最佳解决方案),我想使用基于行动的框架之一对新项目进行原型设计。实际上,我会在 Spring MVC 和 Stripes 之间进行选择。
问题
为了获得对基于动作的框架的正确印象(与 JSF 相比),我想确保我正确使用它们(或多或少)。
因此,在这里我列出了一些最常见的任务(至少对我而言)并描述了我如何使用 JSF 解决它们。我想知道应该如何使用基于动作的框架来解决它们(或者如果具体任务有任何区别,则分别使用 Spring MVC 和 Stripes)。
- 渲染内容:我可以应用来自标准 jsf 库(核心和 html)或来自 3rd-party 库(如 RichFaces)的现成组件。我可以组合简单的组件,并且可以轻松地创建基于标准组件的自己的组件。
- 以正确的格式渲染数据(原始或引用类型):每个组件都允许指定一个转换器,用于以两种方式转换数据(渲染和发送到服务器)。像往常一样,转换器是一个带有 2 个小方法的简单类。
- 站点导航:我在 faces-config.xml 中指定了一组导航案例。然后我指定应该匹配一个或多个导航案例的链接(或按钮)的动作属性。最佳匹配由 JSF 选择。
- 实现流程(例如多表单向导):我使用的是 JSF 1.2,所以我使用Apache Orchestra作为流程(对话)范围。
- 表单处理:我有一个相当标准的 java-bean(JSF 术语中的支持 bean),具有一定的范围。我在这个 bean 属性上“映射”表单字段。如果一切顺利(没有异常并且通过了验证),那么所有这些属性都使用表单字段中的值进行设置。然后我可以调用一个方法(在按钮的action属性中指定)来执行一些逻辑并返回字符串,这应该是我的导航案例之一以进入下一个屏幕。
- 表单验证:我可以创建自定义验证器(或从现有的验证器中选择)并将其添加到几乎每个组件中。第 3 方库有一组自定义 ajax 验证器。标准验证器仅在提交页面后才起作用。实际上,我不喜欢 JSF 中的验证是如何工作的。那里的魔法太多了。许多标准组件(或者可能全部)都有预定义的验证,并且不可能禁用它(可能并非总是如此,但我遇到了很多问题)。
- Ajax 支持:许多 3rd-party 库(MyFaces、IceFaces、OpenFaces、AnotherPrefixFaces...)都具有强大的 ajax 支持并且运行良好。直到遇到问题。那里的魔法也太多了。如果它不起作用,则很难使它起作用,但是您已经按照手册中的描述做对了。
- 用户友好的 URL:人们说存在一些库。它也可以通过过滤器来完成。但我从未尝试过。乍一看似乎太复杂了。
提前感谢您解释如何使用基于操作的框架来完成这些项目(或其中一些项目)。