4

随着我正在处理的 Web 项目的复杂性增加,包含 MVC 结构的需求变得更加紧迫。我的模型类定义明确,但视图和控制器代码往往会混在一起。我也一直在网站上使用相当繁重的 AJAX(主要是 RichFaces jsFunctions),这使事情变得稍微复杂一些。

有没有人找到使用 JSF2 实现 MVC 的好策略?我不想在项目中引入另一个框架(例如 Spring MVC)。

到目前为止的一些想法,我还没有开始做

  • 对于带有大量 ajax 的页面,有一个“视图”bean 用于记住选定的选项卡、选定的项目、提供过滤的数据列表等......
  • 有一个“控制器”bean 来处理模型更改等操作
  • 在 JSF 页面和控制器之间有“命令”bean。jsFunction 使用参数填充命令 bean,调用command.execute()会导致命令 bean 调用控制器 bean 上的正确方法以执行操作。'command' bean 可能包含一些要在完成时调用的 javascript。它还可以指定要重新呈现的页面区域。

有什么想法吗?

编辑

我经常看到的是托管 bean,它们倾向于做所有事情:跟踪用户的选择、更新模型、获取过滤列表等......

我们目前使用的是 JSF 1.2,所以我们不能使用带有参数的动作/动作监听器。例如,我们的托管 bean 包含变量,例如m_selectedDate其唯一目的是在调用updateFilteredItemsBasedOnDate(). 如果额外的变量可以消失就好了,因为它们只是暂时的。JSF 2 的带参数的 EL 应该会有所帮助,但我很好奇是否有可用的替代解决方案。

我很好奇是否有一种方法可以将 MVC 应用于托管 bean,或者某种分离关注点的方法,这样我们就不会得到试图做所有事情的大型 bean。

4

3 回答 3

3

您在寻找设计模式吗?如果您正在寻找 MVC,那么 BalusC 的答案就足够了,否则检查这个

http://www.allapplabs.com/j2ee_design_patterns/j2ee_design_patterns.htm

也看看这个

于 2010-12-07T05:14:59.413 回答
1

好吧,也许您需要的是分层架构。到目前为止,一个 MVC 架构,还有更多的关注点。例如,您可以在视图、业务逻辑和数据访问层中对架构进行分层,在每一层中实现大多数通用设计和企业模式。

您已经开始让其中一个实现 MVC,但是,考虑“关注点分离”是一种很好的做法

通过这种方式,您可以实现组织良好且解耦的代码。

我希望这个简短的解释很有用。

问候。

于 2012-07-10T22:13:41.803 回答
0

您必须看到管理 bean 的更好方法,而不是研究如何更好地在 JSF 中使用 MVC。因为 JSF 本身与 MVC 一起提供了更好的实现。我不确定您在这里的确切含义是实现 MVC 的更好方法。

正如 Balusc 在评论中所说,JSF 本身有足够的 MVC 用于您的应用程序。可能如果您想分离关注点,最好将业务逻辑分离到 Helper 类中并仅在 bean 中编写表示逻辑。

关于是否将 bean 用于业务逻辑还是应该将其与托管 bean 分开存在争议。这完全取决于您的应用程序和特定领域。

谢谢,克里希纳

于 2010-12-12T01:56:32.610 回答