在MVC
中,据我所知,Model
是与数据和数据库相关的部分,它基本上与添加,修改,显示等数据有关...
为了确保这一点,我从维基百科中提取以下内容:
模型存储根据来自控制器的命令检索并显示在视图中的数据。
来自Chrome开发者:
模型是存储应用程序数据对象的位置。该模型对视图和控制器一无所知。当模型发生变化时,通常会通知其观察者发生了变化。
所以我正在阅读一些关于CDI的内容,并且我看到了包@Model
下的(@Named + @RequestScoped)
注释javax.enterprise.inject
,其中包含以下描述:
/**
* <p>
* The built-in stereotype intended for use with beans that define the model layer of an MVC web application architecture such
* as JSF.
* </p>
*
* @see javax.enterprise.inject.Stereotype
* @author Gavin King
*/
正如java doc所述,这应该用在像JSF这样的MVC Web应用程序的模型层上,但是我不知道@Named @RequestScoped
bean如何表示Model层。
如果我能以不同的方式提出这个问题,那么如何使用@Named @RequestScoped
bean(以及为什么)使用它来表示访问数据库?
如果不可能或良好做法甚至不符合逻辑,那么@Model
名称对@Named
和@RequestScoped
bean来说是不错的选择吗? (我会避免使用它,以免混淆任何阅读代码的人)
答案 0 :(得分:0)
好久没有答案了,但我会尽力给你一个钥匙。
如果您将JSF视为mvc,则V是Facelets文件,C是JSF Servlet,然后M是将数据提供给视图的东西,而这些是支持bean,模型通常是这些设计中的请求范围,看看ASP.Net MVC的每件事都是请求范围的。
无论如何,在Javaee配置中,JSF作为一个整体对我来说就是VIEW,它背后有一个模型和一个控制器,它们是CDI事务Bean或EJB和数据库或Rest端点,因此不要将MVC引入其中。这样的限制性理解。
以下答案包含了鲍克·斯科茨(Bauke Scholtz)对JSF组件的更好而详尽的解释,所以请查看。