快速业务通道

精通Grails: 使用Ajax实现多对多关系 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
  | | flight     | | trip      | +----------------+

精通Grails: 使用Ajax实现多对多关系(4)

时间:2011-08-02 IBM Scott Davis

airline、airport 和 trip 表中的所有列均与对应的域类中的字段匹配。flight 是连接表,表示其 他表之间的复杂关系。清单 8 展示了 Flight 表中的字段:

清单 8. Flight 表中的字段

mysql> desc flight; +----------------------+--------------+------+-----+ | Field        | Type     | Null | Key | +----------------------+--------------+------+-----+ | id          | bigint(20)  | NO  | PRI | | version       | bigint(20)  | NO  |   | | airline_id      | bigint(20)  | YES | MUL | | arrival_airport_id  | bigint(20)  | NO  | MUL | | arrival_date     | datetime   | NO  |   | | departure_airport_id | bigint(20)  | NO  | MUL | | departure_date    | datetime   | NO  |   | | flight_number    | varchar(255) | NO  |   | | trip_id       | bigint(20)  | YES | MUL | +----------------------+--------------+------+-----+

用于创建新 Flight 的搭建的 HTML 页面为所有的相关表提供了组合框,如图 1 所示:

图 1. 用于添加航班而搭建的 HTML 页面

精通Grails: 使用Ajax实现多对多关系 - 编程入门网

调优用户界面

迄今为止,m:m 讨论的焦点一直围绕如何使用类和数据库表模拟关系。我希望您能够看到,科学就是 一门艺术。作为 Grails 开发人员,您可以利用许多出色的技巧来改进关系的行为和副作用。现在将焦点 转移到用户界面上,您将会看到一些非常优秀的方法,使用它们调整 m:m 关系的显示。

正如我在前一节中演示的,默认情况下,Grails 使用选择字段来显示 1:m 关系。这个起点还不错, 但是您可能想在不同的环境中使用其他 HTML 控件。选择字段只显示当前值;您必须下拉该列表才能查看 所有可能的值。尽管这在可用屏幕空间非常有限的情况下是最佳选择,但您可能会觉得使所有的选项都显 示出来是一种更好的解决方案。单选按钮适合于显示所有可能的选择并将选择限制为单个值。复选框显示 所有可能的选择并允许选择多个选项。

所有这些控件都适合显示数量有限的选择,但它们不能扩展到数百或数千个可能值。例如,如果我需 要向最终用户提供全世界所有的航空公司(大约 650 家),没有一种标准 HTML 控件能够处理这么大的 数据量。这时就需要开发人员做出判断了。对于这个应用程序,我不需要显示所有 650 家航空公司。我 一生中飞过的不同航空公司可能还不到 12 家。在一些情况下,使用选择字段显示航空公司选项很可能就 足够了。

精通Grails: 使用Ajax实现多对多关系(5)

时间:2011-08-02 IBM Scott Davis

要了解 Grails 如何为 Airline 创建选择字段,请输入 grails generate-views Flight。查看一下 grails-app/views/flight/create.gsp。选择字段是使用 <g:select> 标记在一行代码中生成的。 如果不熟悉 Grails TagLibs,请参阅 上个月的文章。清单 9 展示了使用中的 <g:select> 字段 :

清单 9. 使用中的 <g:select> 字段

<g:select optionKey="id"       from="${Airline.list()}"       name="airline.id"       value="${flight?.airline?.id}" ></g:select>

在 Web 浏览器中选择 View > Source 查看这是如何呈现的,如清单 10 所示:

清单 10. 呈现的选择字段

<select name="airline.id" id="airline.id" > <option value="1" >UAL -

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号