只是想知道(在 Grails/Java 中)在 MVC 设计的 View /gsp 中调用: Foo.list()
是否是不好的做法,而不是通过模型传递它(即foos: Foo.list()
) 并使用它?
在我看来,由于显示如此简单,所以这很好,但另一方面我知道直接从 View 访问域对象是不好的做法。
提前致谢。
最佳答案
您所做的事情通常被认为是一种不好的做法。原因很简单:你的 View 与你的模型紧密相连。让我们看看后果:
- 如果您需要过滤掉返回的列表,则必须在 View 中执行此操作。例如,假设您想要显示启用分页的
Foo
实例列表。因此,您需要有一个max
参数,并且它将像Foo.list(max: params.max)
在您的 View 内一样使用。max
是您可以想象的数百个参数中的一个(顺序、排序...)。因此,您的 View 不仅取决于域实例,还取决于请求参数,您必须处理它们。 - 最重要的是,每当您需要将相同的数据呈现为 JSON(例如使用 Ajax)或 XML 或其他方式时,您都必须复制此代码。而这种不好的做法,不可维护且容易出错。
结论:您可以为原型(prototype)设计或不会重用的 View (例如管理内容)执行此操作。其他情况就不用管它了。
关于java - 最佳实践 - 从 View 访问域对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4889046/