Grails填充g:从数据库中选择

时间:2013-11-30 19:04:26

标签: grails

我在使用g:select标记在gsp页面上填充域对象值时遇到了问题。

<g:select name="demo" id="demo"
          value="${dm.id}"
          noSelection="${['null':'Select..']}"
          from="${dm}"
          optionValue="${dm.type}"/>

在我的控制器中,我有一个从我的域中收集值的对象。我尝试在控制器中将此对象写为:

 def d = Demo.getAll()

def d = Demo.list()

在尝试使用g:select标记时,这两个都返回了异常。错误是:

没有方法签名:Demo.getAt()适用于参数类型:(java.util.ArrayList)值:[[One,Two,Three,Four,Five]]

我只需删除g:select标记并在gsp中写下以下内容即可让我的代码正常工作:

    <select name="demo" id="dm">
    <option value="">Select!</option>
    <g:each in="${dm}" status="i" var="dm">
        <option value="${dm.id}">${dm.name}</option>
    </g:each>
</select>

但是,我想知道如何使用g:select标记进行此操作,以供将来参考。

提前致谢!

1 个答案:

答案 0 :(得分:3)

我在您的选择中看到两个问题:

<g:select name="demo" id="demo"
          value="${dm.id}"
          noSelection="${['null':'Select..']}"
          from="${dm}"
          optionValue="${dm.type}"/>
  1. 值不应该查看id的集合。我相信这就是你收到错误的原因。 value应该是您传递到视图中的任何实例ID。
  2. optionValue不需要表达式。
  3. 控制器操作

    def someAction() {
       def dm = Demo.get(params.id)
       def demos = Demo.list()
       [dm: dm, demos: demos]
    }
    

    查看

    <g:select name="demo" id="demo"
              value="${dm.id}"
              noSelection="${['null':'Select..']}"
              from="${demos}"
              optionValue="type"/>