调优用户界面
迄今为止,m:m 讨论的焦点一直围绕如何使用类和数据库表模拟关系。我希望您能够看到,科学就是一门艺术。作为 Grails 开发人员,您可以利用许多出色的技巧来改进关系的行为和副作用。现在将焦点转移到用户界面上,您将会看到一些非常优秀的方法,使用它们调整 m:m 关系的显示。
正如我在前一节中演示的,默认情况下,Grails 使用选择字段来显示 1:m 关系。这个起点还不错,但是您可能想在不同的环境中使用其他 HTML 控件。选择字段只显示当前值;您必须下拉该列表才能查看所有可能的值。尽管这在可用屏幕空间非常有限的情况下是非常好的选择,但您可能会觉得使所有的选项都显示出来是一种更好的解决方案。单选按钮适合于显示所有可能的选择并将选择限制为单个值。复选框显示所有可能的选择并允许选择多个选项。
所有这些控件都适合显示数量有限的选择,但它们不能扩展到数百或数千个可能值。例如,如果我需要向最终用户提供全世界所有的航空公司(大约 650 家),没有一种标准 HTML 控件能够处理这么大的数据量。这时就需要开发人员做出判断了。对于这个应用程序,我不需要显示所有 650 家航空公司。我一生中飞过的不同航空公司可能还不到 12 家。在一些情况下,使用选择字段显示航空公司选项很可能就足够了。
要了解 Grails 如何为 Airline 创建选择字段,请输入 grails generate-views Flight。查看一下 grails-app/views/flight/create.gsp。选择字段是使用
清单 9. 使用中的
from="${Airline.list()}"
name="airline.id"
value="${flight?.airline?.id}" ></g:select>
在 Web 浏览器中选择 View > Source 查看这是如何呈现的,如清单 10 所示:
清单 10. 呈现的选择字段
<option value="1" >UAL - United Airlines</option>
<option value="2" >DAL - Delta</option>
<option value="3" >COA - Continental</option>
</select>