技术开发 频道

精通 Grails: Grails 服务和 Google 地图

  加入服务

  首先,把新的 lat 和 lng 字段添加到 grails-app/domain/Airport.groovy,如清单 6 所示:

  清单 6. 把 lat 和 lng 字段添加到 Airport POGO

class Airport{
  static constraints
= {
    name()
    iata(maxSize:
3)
    city()
    state(maxSize:
2)
    country()
  }
  
  
String name
  
String iata
  
String city
  
String state
  
String country = "US"
  
String lat
  
String lng
  
  
String toString(){
    
"${iata} - ${name}"
  }
}

  在命令提示处输入 grails generate-views Airport 来创建 GSP 文件。借助 AirportController.groovy 的 def scaffold = Airport 行,从运行时开始就一直在动态搭建 GSP 文件。要想对这个视图进行更改,我必须先处理代码。

  创建新的 Airport 时,我将把用户可编辑字段限制为 iata 和 city。要想让地理编码查询能够工作,必须具备 iata 字段。我没有更改 city,因为我喜欢由自己来提供这个信息。DEN 真的就在丹佛(Denver),但 ORD(Chicago O'Hare)却在伊里诺斯州的罗斯蒙特(Rosemont),而 CVG(俄亥俄州辛辛那提机场,Cincinnati,Ohio airport)则在肯塔基州的佛罗伦萨市(Florence)。将这两个字段留在 create.gsp 里,其余的删除。现在 create.gsp 如清单 7 所示:

  清单 7. 修改 create.gsp

<g:form action="save" method="post" >
  
<div class="dialog">
    
<table>
      
<tbody>                                        
        
<tr class="prop">
          
<td valign="top" class="name"><label for="iata">Iata:</label></td>
          
<td valign="top"
              class
="value ${hasErrors(bean:airport,field:'iata','errors')}">
              
<input type="text"
                     maxlength
="3"
                     id
="iata"
                     name
="iata"
                     value
="${fieldValue(bean:airport,field:'iata')}"/>
          
</td>
        
</tr>
        
<tr class="prop">
          
<td valign="top" class="name"><label for="city">City:</label></td>
          
<td valign="top"
              class
="value ${hasErrors(bean:airport,field:'city','errors')}">
              
<input type="text"
                     id
="city"
                     name
="city"
                     value
="${fieldValue(bean:airport,field:'city')}"/>
          
</td>
        
</tr>                                                
      
</tbody>
    
</table>
  
</div>
  
<div class="buttons">
    
<span class="button"><input class="save" type="submit" value="Create" /></span>
  
</div>
</g:form>

  图 2 展示了所产生的表单:

  图 2. 创建 Airport 表单  

0
相关文章