随着我正在开展的Web项目的复杂性的增加,包含MVC结构的需求变得越来越迫切。我的模型类定义良好,但视图和控制器代码往往会混合在一起。我一直在网站上使用非常繁重的AJAX(主要是RichFaces jsFunctions),这使得事情稍微复杂一些。
有没有人找到使用JSF2实现MVC的好策略?我不想在项目中引入另一个框架(例如Spring MVC)。
到目前为止的一些想法,我还没有开始呢
command.execute()
会导致命令bean在控制器bean上调用正确的方法来执行操作。 'command'bean可能包含一些在完成时调用的javascript。它还可以指定要重新呈现的页面区域。有什么想法吗?
修改
我经常看到的是托管bean,它们可以做所有事情:跟踪用户的选择,更新模型,获取过滤后的列表等......
我们目前正在使用JSF 1.2,因此我们不能将actions / actionlisteners与参数一起使用。因此,例如,我们的托管bean包含m_selectedDate
等变量,其唯一目的是在调用updateFilteredItemsBasedOnDate()
时将所选日期提供给后端。如果额外的变量可以消失,那将是很好的,因为它们只是暂时的。带有参数的JSF 2的EL应该会有所帮助,但我很好奇是否有可用的备用解决方案。
我很好奇是否有办法将MVC应用于托管bean,或者是一种分离关注点的方法,这样我们就不会有大豆试图做所有事情。
答案 0 :(得分:3)
您在寻找设计模式吗?如果您正在寻找MVC,那么BalusC的答案就足够了,否则请查看
http://www.allapplabs.com/j2ee_design_patterns/j2ee_design_patterns.htm
另请查看this
答案 1 :(得分:1)
好吧,也许您需要的是分层架构。到目前为止,一个MVC架构,还有更多的顾虑。 例如,您可以在View,Business Logic和DataAccess层中对架构进行分层,在每个层中实现大多数公共设计和企业模式。
你已经开始使用其中一个实现MVC,但是,这是一个很好的做法,可以计算“关注点分离”
通过这种方式,您可以实现组织良好且解耦的代码。
我跳过这个简短的解释是有用的。
问候。
答案 2 :(得分:0)
您必须看到管理bean的更好方法,而不是研究如何更好地在JSF中使用MVC。因为JSF本身带有MVC更好的实现。我不确定你究竟是什么意思是实现MVC的更好方法。
正如Balusc在评论中所说,JSF本身为您的应用程序提供了足够的MVC。可能如果你想分开关注点,最好将业务逻辑分成Helper类,只在bean中编写表示逻辑。
关于是将bean用于业务逻辑还是应该将其与托管bean分开,存在争议。这完全取决于您的应用程序和特定领域。
谢谢, 克里希纳