[Grails] 下拉列表数据绑定问题
qilin
2008-12-25
初学grails,遇到一个问题:
user表中,字段cred_type(证件类型)的取值为,S-身份证,J-军官证,Q-其他 现有另一个表,表名为col_desc,用来存储这些值-名对的映射,字段如下: table_name col_name col_value col_desc 现在在做user的录入界面时,将证件类型作为g:select,如何将其与col_desc表中table_name=user、col_name=cred_type的那一批记录关联起来? |
|
qilin
2008-12-26
附:通常我的做法是在controller中获得这个list,传给页面。在这里我是想问,grails有没有更简单的方法,比如在<g:select>中配置一个ColDesc.findAllBy...的方法,直接就关联上。
人气不是特别旺啊。 |
|
qilin
2008-12-26
grails确实可以在<g:select>的from属性中定义findAllBy...
可问题又来了,如果查询条件无法使用动态查找器,该怎么办? 看了看有个withCriteria,但如何写在from属性中呢? 如下写法倒是没问题: from="${FieldDesc.withCriteria{eq('tableName','user')}}" 甚至下面的写法也行: from="${FieldDesc.withCriteria{and{eq('tableName','user')}}}" 可如果有多个查询条件,就不知道该怎么写了。如下写法报错: from="${FieldDesc.withCriteria{and{eq('tableName','user') eq('colName','cred_type') eq('state','U')}}}" 看来真要买本书了,老这样空手套白狼,早晚有失手的时候呀。 |
|
qilin
2008-12-26
目前的解决办法是:
在action中,将 FieldDesc.withCriteria{ and{ eq('tableName','user') eq('colName','cred_type') eq('state','U') } } 查出,然后传给视图,只能这样了吗? |
|
qilin
2008-12-30
真的是会者不难,难者不会呀。
除了以上方法,仍有以下两种替代方法,孰优孰劣,各位沉默的大侠自己考虑吧: 1.定义服务类,在其中定义方法getColDescList(table_name,col_name,state),然后在gsp->g:select->from中,直接调用该方法。 2.在gsp->g:select->from中,直接使用ColDesc.executeQuery(......) |
|
wind13
2009-02-16
<g:select from="${ColDesc.findAllWhere('table_name':'user','col_name':'cred_type')}"></g:select> 还有一些写法……可以看Grails Framework Reference Documentation. |