当然,我的第一个 Grails 项目会在我的数据模型和 UI 设计师想要的呈现之间出现疯狂的不匹配。
这是问题空间的简化陈述:
杂货店里有三种原料:胡萝卜、芹菜和西红柿。该应用程序的目的是保存用户的购物清单:每个要购买多少。
网页设计师希望使用多个 HTML SELECT 来完成此操作,因此您从下拉列表中选择要购买的成分,然后在其旁边键入数量。如果您想要更多成分,请单击添加更多 SELECT 的 JavaScript 链接。
该设计指定每个下拉菜单都是相同的,并且行数是无限的。所以你可以得到一个有 5 行的表格,对应于 3 个胡萝卜、9 个芹菜、2 个芹菜、5 个胡萝卜和 1 个番茄。
我“应该”生产的是 8 根胡萝卜、11 根芹菜和 1 个番茄的订单。
没有讨论为什么这是糟糕的 UI 设计的所有争论,我实际上想了解如何将模型/控制器映射到给定这种不匹配的视图,以提交和最终编辑存储的提交。
我最初的想法是:
- 对于入站数据,在 Controller 中根据参数和一些逻辑构造一个新的映射,以将值正确添加到三个新的键/值对中,将新映射传递给 bindData 方法而不是请求参数映射本身。
- 为了呈现视图以供编辑,使用 afterInterceptor 将模型的该部分重写为这些 SELECT 的正确数量,认识到我原来的 5 行顺序在呈现以供编辑时将变为 3 行。
但是,当我阅读有关 Command 对象的内容时,我想知道这是否是一种更好的方法。
我已经在线阅读了许多页面,但没有看到针对这种 MVC 不匹配的任何解决方案。
抛开显而易见的答案(与设计师抗争),“Grails”的处理方式是什么?