java - 最佳实践 - 从 View 访问域对象列表?

标签 java model-view-controller grails view

只是想知道(在 Grails/Java 中)在 MVC 设计的 View /gsp 中调用: Foo.list() 是否是不好的做法,而不是通过模型传递它(即foos: Foo.list()) 并使用它?

在我看来,由于显示如此简单,所以这很好,但另一方面我知道直接从 View 访问域对象是不好的做法。

提前致谢。

最佳答案

您所做的事情通常被认为是一种不好的做法。原因很简单:你的 View 与你的模型紧密相连。让我们看看后果:

  1. 如果您需要过滤掉返回的列表,则必须在 View 中执行此操作。例如,假设您想要显示启用分页的 Foo 实例列表。因此,您需要有一个 max 参数,并且它将像 Foo.list(max: params.max) 在您的 View 内一样使用。 max 是您可以想象的数百个参数中的一个(顺序、排序...)。因此,您的 View 不仅取决于域实例,还取决于请求参数,您必须处理它们。
  2. 最重要的是,每当您需要将相同的数据呈现为 JSON(例如使用 Ajax)或 XML 或其他方式时,您都必须复制此代码。而这种不好的做法,不可维护且容易出错。

结论:您可以为原型(prototype)设计或不会重用的 View (例如管理内容)执行此操作。其他情况就不用管它了。

关于java - 最佳实践 - 从 View 访问域对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4889046/

相关文章:

c# - 值不能为空。参数名称 : entitySet

jquery - MVC - jQuery 未定义

gradle - 无法解决最近创建的grails项目中的依赖关系

Grails异步编程,如何在then block 中传递来自promise的值返回?

java - JAX-WS - 添加 SOAP header

java - CriteriaBuilder 和实体列表的 isMember (Hibernate)

java - 使用 DOM 解析器对 XML 中的节点进行排序

java - 两个类之间的 ActionListener

grails - iText无法在Grails Web应用程序中呈现图像

Java为动态增长的数组连续分配内存?