grails实现省市级联

    使用的grails版本是1.1,在页面实现省市的地区级联显示。

    以下是领域对象

class Province implements Comparable {
    String name
    Integer lawyerCount = 0
    SortedSet cities
   
    static hasMany = [cities: City]
   
    static constraints = {
        name()
    }
   
    static mappings = {cities fetch : 'join'}
   
    String toString(){"${name}"}
   
    int compareTo(obj){id.compareTo(obj?.id)}
}

class City implements Comparable{
    String name
    Integer lawyerCount = 0
    Province province
    static belongsTo  = Province

    static constraints = {
    }

    String toString(){"${name}"}

    int compareTo(obj){id.compareTo(obj.id)}
}

 

    在gsp中省的代码是

                                    <g:select optionKey="id" from="${Province.list()}" name="province.id" value="${lawOrgInstance?.province?.id}" οnchange="${remoteFunction(controller:'city', action:'listByProvince', params:'\'id=\'+this.value', update:'city.id')}"></g:select>
    注意这里的onchange方法调用的是CityController里面的listByProvince方法。当选项变化时,会填充id='city.id'的标签。

    <div  id="city.id"><select><option>请选择城市</option></select></div>

那么这个方法的代码如下

    def listByProvince = {
     assert null != params.id
        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
        render g.select(optionKey:"id", from:City.findAllByProvince( Province.get(params.id), params), name:"city.id")
    }

    注意这里的标签作为方法调用。

    对于没有涉及到部分,均采用命令行工具自动生成的。

    在grails中,级联显示就是这么简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值