【问题标题】:Getting a value from g:select in Grails从 Grails 中的 g:select 获取值
【发布时间】:2013-09-09 14:30:22
【问题描述】:

我正在尝试在我的 grails 应用程序中创建自己的“编辑”表单。

我的 g:select 当前填充了我的数据库中的内容,如下所示:

<g:select name="nameList" from="${Card.list()}" value="${name} "  />

然后是值:

 <g:field name="amount" type="number" value="" required=""/>

我的域只有两个变量 - 名称和数量。我想从下拉框中选择项目,输入金额然后单击“更新”,我的更新方法是由 grails 生成的默认方法,因此它需要 ID 和版本,我将如何传递它?

我的更新按钮;

<g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" />

我的域名代码:

package cardstorage
class Card {
    String name;
    int amount;

    static constraints = {

        name(blank:false);
        amount(blank:false);
    }
    String toString(){
        return name;
    }
}

谢谢

【问题讨论】:

  • 我假设单击更新不起作用。当您单击更新按钮时,您遇到了什么样的错误?
  • 我收到“未找到 ID 为空的卡”错误。
  • 您的域类是否使用自定义 ID 生成器?例如,generator: assigned?请复制并粘贴域类好吗?
  • 修改了我的问题。
  • 您的视图是否使用 Grails 脚手架?确保您有一个包含 ID 的隐藏字段,否则您的 ID 在尝试更新时将为空,因为它没有传递给 Update 控制器操作。例如,&lt;g:hiddenField name="id" value="${cardInstance?.id}" /&gt; 如果您使用的是脚手架,则会出现,但如果不是,您可能需要自己添加。

标签: grails


【解决方案1】:

我已经修复了它,但我确信这不是正确的方法。

<g:form method="post" >

       <g:select name="card" from="${Card.list()}" optionValue ="name" optionKey="id" />

      <g:field name="amount" type="number" value="" required=""/>

        <fieldset class="buttons">
    <g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" />
</fieldset>
</g:form>

这就是我的 g:select 代码。在我的 Controller 方法中,将“card”的值传递给“Long id”会导致“id”为 49(null + 1 = 49?)

def update(Long id, Long version) {

    id = params.card;
    id = id- 48;
  ...  
}

现在我可以更新我的记录了,但是我很好奇我应该如何更正确地做到这一点。

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    相关资源
    最近更新 更多