目前使用Grails 2.43。我有两个域类(州和县),以及州和县的两个选择下拉列表。
当选择该状态时,GORM finder是否有办法让动态查询返回状态中的特定县。从而排除所有其他不在选定国家的县?
表单元素:
<g:select name="locationState" class="form-control" from="${....State.list().sort{it.orderNumber}}">
<g:select name="locationCounty" class="form-control" from="${...State.FindByName(it.orderNumber).counties}">
以下是示例类:
class State {
static hasMany = [county:County]
String name
String value
int orderNumber = 0
static constraints = {
name nullable:false, maxSize:50, blank:false
value nullable:false, maxSize:100, blank:false
}
String toString(){
"$value"
}
static mapping = {
table 'state'
cache: 'read-write'
columns{
id column:'id'
name column:'name'
value column:'value'
orderNumber column:'order_number'
}
id generator: 'assigned'
}
}
class County {
State state
String county
static constraints = {
state nullable:false
county nullable:false, maxSize:100, blank:false
}
String toString(){
"${state.name} - $county"
}
static mapping = {
table 'county'
cache: 'read-write'
columns{
id column:'id'
county column:'county'
state column:'state_id'
}
id generator: 'assigned'
}
}
答案 0 :(得分:0)
这取决于您与域类的关联方式。如果State hasMany County(ies)和/或County属于State,则可以使用动态查找器。例如:
// All Counties
County.list()
// All States
State.list()
//All Counties in State Vermont
State.findByName("Vermont").counties
//State for a county
County.findByName("Chittenden").state
如果你试图制作一个有点动态的表单,你可以先显示你的状态下拉列表,并在选择状态之前使县下拉列表处于非活动状态。然后你可以进行异步调用来获取State的县,或者如果已经加载了完整的对象,你可以用selectedState.counties
填充County选择框。
请参阅GORM对象关系映射:http://grails.org/doc/latest/guide/GORM.html#domainClasses