只是想知道(在Grails / Java中)在MVC设计的view / gsp中调用:Foo.list()
是不好的做法,而不是将其传递给模型(即foos: Foo.list()
)和用那个?
在我看来,由于显示器非常简单,这很好,但另一方面我知道直接从视图访问域对象是不好的做法。
提前致谢。
答案 0 :(得分:1)
不这样做的一个非常实际的原因是,您最终可能希望使用来自不同操作的相同视图,最终以某种方式过滤数据。您可能并不总是想要处理Domain.list()。
答案 1 :(得分:1)
你所做的一般被认为是一种不好的做法。原因很简单:您的观点与您的模型紧密相关。让我们发现后果:
Foo
实例列表。因此,您需要拥有max
参数,并且会在视图中使用Foo.list(max: params.max)
。 max
是您可以想象的数百个参数(订购,排序......)。因此,您的视图不仅取决于域实例,还取决于请求参数,您必须处理它们。结论:您可以为原型设计或不会重复使用的视图(例如管理员资料)执行此操作。忘记它用于其他情况。
答案 2 :(得分:0)
我认为在原型阶段,这样的陈述“有点”可以接受。
但是,更现实的是,这种简单的东西在生产代码中并没有真正发生。当您开始操作数据,或者说,检索大量不同的对象并使用它们执行某些操作时,您会发现您可能希望返回与UI层完全不同的内容...
现在,如果你已经开始在早期的一个声明中构建一些闪存,这将导致你必须重做部分UI代码...这不太好,并且可能会引起头痛。 / p>
另外,你已经回答了自己的问题:是的,我认为这是不好的做法。
答案 3 :(得分:0)
我同意这是不好的做法。即使是在原型设计过程中,从控制器传递也不会增加额外的时间。