Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 在JSF2托管bean中实现MVC的最佳实践_Model View Controller_Jsf_Jakarta Ee_Jsf 2_Separation Of Concerns - Fatal编程技术网

Model view controller 在JSF2托管bean中实现MVC的最佳实践

Model view controller 在JSF2托管bean中实现MVC的最佳实践,model-view-controller,jsf,jakarta-ee,jsf-2,separation-of-concerns,Model View Controller,Jsf,Jakarta Ee,Jsf 2,Separation Of Concerns,随着我所从事的web项目的复杂性增加,包含MVC结构的需求变得越来越迫切。我的模型类定义得很好,但视图和控制器代码往往被混在一起。我在网站上也使用了大量AJAX(主要是RichFaces JSF函数),这使得事情稍微复杂一些 有没有人找到使用JSF2实现MVC的好策略?我不想在项目中引入另一个框架(例如SpringMVC) 到目前为止,我还没有开始做一些想法 对于使用大量ajax的页面,有一个“视图”bean,用于记住所选选项卡、所选项目、提供过滤后的数据列表等 有一个“控制器”bean来处理

随着我所从事的web项目的复杂性增加,包含MVC结构的需求变得越来越迫切。我的模型类定义得很好,但视图和控制器代码往往被混在一起。我在网站上也使用了大量AJAX(主要是RichFaces JSF函数),这使得事情稍微复杂一些

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

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

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

编辑

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

我们目前使用的是JSF1.2,因此不能使用带有参数的actions/actionlisteners。例如,我们的托管bean包含变量,如
m_selectedDate
,其唯一目的是在调用
updateFilteredItemsBasedOnDate()
时将所选日期提供给后端。如果额外的变量可以消失就好了,因为它们只是暂时的。JSF2的EL和参数应该会有所帮助,但我很好奇是否有其他解决方案可用


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

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


还可以查看您必须了解更好的bean管理方法,而不是研究如何更好地在JSF中使用MVC。因为JSF本身与MVC一起提供了更好的实现。我不知道你在这里的确切意思是什么,作为实现MVC的更好的方法

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

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

谢谢,
奎师那,也许你需要的是一个分层的架构。到目前为止,MVC架构还存在更多的问题。 例如,您可以在视图、业务逻辑和数据访问层中分层您的架构,在每一层中实现大多数公共设计和企业模式

您已经从其中一个实现MVC开始了,但是,考虑“关注点分离”是一个很好的实践吗

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

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


尊敬。

我不明白“如何使用JSF实现MVC?”。JSF本身已经是一个MVC(2)框架。托管bean是M,facelets页面是V,内置的FacesServlet是C。你的问题不是更像是“我如何在JSF中设计托管bean?”吗?很好。我更新了问题标题并添加了一些评论。