grails - Grails:从gsp调用Domain方法

标签 grails gsp

我有以下域类:

package com.example

class Location {
   String state

    def getStatesList(){

    def states = ['AL','AK','AZ','AR','CA','CO','CT',
         'DC','DE','FL','GA','HI','ID','IL','IN','IA',
         'KS','KY','LA','ME','MD','MA','MI','MN','MS',
         'MO','MT','NE','NV','NH','NJ','NM','NY','NC',
         'ND','OH','OK','OR','PA','RI','SC','SD','TN',
         'TX','UT','VT','VA','WA','WV','WI','WY']
    return states
   }
} 

在我的gsp中,我试图像这样在选择下拉列表中显示状态列表
<g:select name="location.state" class="form-control" from="${com.example.Location?.getStatesList()}" value="${itemInstance?.location?.state}" noSelection="['': '']" />

这样,我收到“缺少方法异常”

如果我使用list更改方法,我将不再收到错误,但我不希望这样。
from="${com.example.Location?.list()}"    // works
from="${com.example.Location?.getStatesList()}"     // does not work

任何帮助是极大的赞赏。

最佳答案

正如dmahaptro所说,您可以通过将getStatesList()设为静态方法来纠正此问题。

class Location {
   String state

   static List<String> getStatesList() {
         ['AL','AK','AZ','AR','CA','CO','CT',
         'DC','DE','FL','GA','HI','ID','IL','IN','IA',
         'KS','KY','LA','ME','MD','MA','MI','MN','MS',
         'MO','MT','NE','NV','NH','NJ','NM','NY','NC',
         'ND','OH','OK','OR','PA','RI','SC','SD','TN',
         'TX','UT','VT','VA','WA','WV','WI','WY']
   }
} 

然后,您将能够执行Location.statesListLocation.getStatesList()

另类

我认为更干净的替代方法是使用最终常量:
class Location {
   String state

   static final List<String> STATES =
         ['AL','AK','AZ','AR','CA','CO','CT',
         'DC','DE','FL','GA','HI','ID','IL','IN','IA',
         'KS','KY','LA','ME','MD','MA','MI','MN','MS',
         'MO','MT','NE','NV','NH','NJ','NM','NY','NC',
         'ND','OH','OK','OR','PA','RI','SC','SD','TN',
         'TX','UT','VT','VA','WA','WV','WI','WY']
} 

然后,您可以使用相同的方式访问列表:Location.STATES。区别在于,全大写字母名称表示一个不变的值(并且不需要访问数据库)。

关于grails - Grails:从gsp调用Domain方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33530925/

相关文章:

tomcat - 大文件上传期间 Grails 连接超时

grails - 该项目尚未建立...无法找到该类... org.springframework.security.core.GrantedAuthority

database - grails:在 gsp 中显示数据库中的元素列表

grails - 将对象属性加载到类类型的变量中后,为什么不能访问我的对象属性

javascript - 使用 Javascript 中的 GSP 标签

grails - 如何在 Grails 中获取域约束的值?

Grails - 使用命令对象将多个具有相同名称的请求参数绑定(bind)到列表

json - 将 json 或 json 数组绑定(bind)到 grails 对象

grails - 渲染 View 后对象列表消失

html - 为ES转换grails gsp中的引号