春天的最佳实践,以分离控制器和JSP中的视图模型?

Xelian

最好同时使用Spring Controller类(带有@ ModelAttribute)和jsp来准备模型,还是仅由Spring和来自jsp的视图来准备模型这个想法来自这个话题我有一个控制器类:

@RequestMapping(value = {"", "/"}, method = RequestMethod.GET, params = "mode=create")
public ModelAndView showCreatePage(@ModelAttribute("createForm") ApplicationCreateForm form)
        {
       return customMethod("some string");
}

在我的jsp中,我有:

<jsp:useBean id="createForm" scope="request" class="com.example.ApplicationCreateForm"/>

我不需要使用要向用户提供的信息来填充表单,所有字段均为空。

因此,据我了解,我已经两次声明了ApplicationCreateForm bean,具有相同的作用域-请求。

同时使用两者是一种好的设计习惯吗?有什么理由吗?第二个声明(在jsp中)是否赋予我更多权力,例如覆盖模型或完全没有必要?当两个声明都存在时,第二个声明是否会覆盖第一个?

阿努·亚达夫(Anuj yadav)

此实现有很多问题。

是MVC吗?

如果JSP了解Model,我们为什么需要控制器。让我们删除路由引擎并直接使用JSP来使用Model。但是,此应用程序将是整体的。我相信你不想要那样。我们有两种主要的MVC。在这两种情况下,控制器都是正面对象。它接收命令,解释命令,使用数据层并获取模型。如果需要,将模型转换为viewModel,然后将该对象传递给视图。

为什么要viewModel?

假设我们正在屏幕上实现分页。我们正在显示人员清单。人员是您的模型,但是您的视图也需要知道页码,页面大小等。因此,在这种情况下,您的模型可能不适合。

假设我们需要多个表中的数据才能显示在屏幕上。该数据以某种方式相关。现在,您将传递单独的模型对象来查看并让其执行所有业务逻辑吗?理想情况下不。

设计不应该支持DTO或ViewModel或命令和查询吗?

我们希望我们的应用程序经过适当设计。如上所述,我们需要在处理后发送数据以查看或客户端(REST)。除非我们只是创建CRUD内容,否则处理后的数据可能不会映射到您的域。如果要实现CQS或CQRS,该怎么办?

分离在哪里,SOLID在哪里?

如果我的观点是执行业务逻辑,那么“ S”在哪里?如果视图了解模型并且需要在模型的任何更改中进行更改,那么“ O”在哪里?如果我想将查询与命令(CQS)分开并分别缩放这两件事怎么办?

总而言之,我会说,是的,您可以这样做,但是如果您正在开发一个体面的应用程序,或者您认为它将最终成为一个应用程序,那就不好了。我见过人们使用从ORM开始到控制器进行查看的模型实体。它将起作用,但问题是您是否需要一个整体且紧密耦合的应用程序。根据我的经验,与控制器相比,表示逻辑(视图)具有非常不同的逻辑和数据需求,数据访问层也是如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在模型和控制器中使用CoreLocation的最佳实践

来自分类Dev

嵌套控制器,范围和模型的最佳实践?

来自分类Dev

从Laravel中的控制器访问模型的最佳实践

来自分类Dev

从Laravel中的控制器访问模型的最佳实践

来自分类Dev

处理容器控制器中的子视图控制器的UINavigationItem更改的最佳实践?

来自分类Dev

JSP中的MVC模型视图控制器

来自分类Dev

在Codeigniter中命名控制器和模型的最佳方法

来自分类Dev

has_many:通过模型名称,控制器和属性的最佳实践?

来自分类Dev

has_many:通过模型名称,控制器和属性的最佳实践?

来自分类Dev

laravel使用没有控制器的模型,“最佳实践”?

来自分类Dev

添加非标准视图和控制器操作的最佳实践?

来自分类Dev

最佳代码实践iPhone和iPad自定义视图控制器

来自分类Dev

在多个视图控制器中轻松重用一堆代码的最佳实践是什么?

来自分类Dev

清理视图红宝石逻辑并将关注点分离到模型/控制器中

来自分类Dev

iOS中的模型-视图-控制器

来自分类Dev

iOS中的模型-视图-控制器

来自分类Dev

将Ang操作与Angular控制器分离-希望有最佳实践

来自分类Dev

Angular最佳实践:在工厂还是在控制器中承诺?

来自分类Dev

Laravel 4中的控制器“最佳实践”

来自分类Dev

在动作控制器 Laravel 中定义响应的最佳实践

来自分类Dev

MVC模式中模型与控制器的分离

来自分类Dev

在Codeigniter中分离模型文件夹,视图文件夹和控制器文件夹

来自分类Dev

AngularJS控制器功能最佳实践

来自分类Dev

木偶控制器最佳实践

来自分类Dev

AngularJS 控制器的最佳实践

来自分类Dev

视图控制器已分离

来自分类Dev

Codeigniter hmvc和主控制器,模型和视图

来自分类Dev

用于多用途模型的Rails控制器的最佳实践

来自分类Dev

将数据从控制器传递到视图布局的最佳实践是什么?

Related 相关文章

  1. 1

    在模型和控制器中使用CoreLocation的最佳实践

  2. 2

    嵌套控制器,范围和模型的最佳实践?

  3. 3

    从Laravel中的控制器访问模型的最佳实践

  4. 4

    从Laravel中的控制器访问模型的最佳实践

  5. 5

    处理容器控制器中的子视图控制器的UINavigationItem更改的最佳实践?

  6. 6

    JSP中的MVC模型视图控制器

  7. 7

    在Codeigniter中命名控制器和模型的最佳方法

  8. 8

    has_many:通过模型名称,控制器和属性的最佳实践?

  9. 9

    has_many:通过模型名称,控制器和属性的最佳实践?

  10. 10

    laravel使用没有控制器的模型,“最佳实践”?

  11. 11

    添加非标准视图和控制器操作的最佳实践?

  12. 12

    最佳代码实践iPhone和iPad自定义视图控制器

  13. 13

    在多个视图控制器中轻松重用一堆代码的最佳实践是什么?

  14. 14

    清理视图红宝石逻辑并将关注点分离到模型/控制器中

  15. 15

    iOS中的模型-视图-控制器

  16. 16

    iOS中的模型-视图-控制器

  17. 17

    将Ang操作与Angular控制器分离-希望有最佳实践

  18. 18

    Angular最佳实践:在工厂还是在控制器中承诺?

  19. 19

    Laravel 4中的控制器“最佳实践”

  20. 20

    在动作控制器 Laravel 中定义响应的最佳实践

  21. 21

    MVC模式中模型与控制器的分离

  22. 22

    在Codeigniter中分离模型文件夹,视图文件夹和控制器文件夹

  23. 23

    AngularJS控制器功能最佳实践

  24. 24

    木偶控制器最佳实践

  25. 25

    AngularJS 控制器的最佳实践

  26. 26

    视图控制器已分离

  27. 27

    Codeigniter hmvc和主控制器,模型和视图

  28. 28

    用于多用途模型的Rails控制器的最佳实践

  29. 29

    将数据从控制器传递到视图布局的最佳实践是什么?

热门标签

归档