2010-10-13 83 views
0

我摆脱了最初的更新gsp Grails提供。Grails:UPDATE函数是如何工作的?

我把它放在我的list.gsp表的第一行,并更改表克所有的值:文本字段,以便他们可以不用去的save.gsp

但现在我可以编辑试图使它工作,而我不能。

我在每一行的最后一列添加了一个更新按钮。

当我改变了G的值:文本框,然后点击更新按钮它告诉我

Density #ID updated

但值不会更改。

我想我在控制器中的def update中做了一些错误。

下面是代码:

def update = { 
     log.info "Entering Action ${actionUri}" 

     def densityInstance = Density.get(params.id) 
     if (densityInstance) { 

       if(params?.Rcommodity) { 
        println "${params.Rcommodity}" 

       } 
      if (params.version) { 
       def version = params.version.toLong() 
       if (densityInstance.version > version) { 

        densityInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'density.label', default: 'Density')] as Object[], "Another user has updated this Density while you were editing") 
        render(view: "list", model: [densityInstance: densityInstance]) 
        return 
       } 
      } 
      densityInstance.properties = params 
      if (!densityInstance.hasErrors() && densityInstance.save(flush: true)) { 
       flash.message = "${message(code: 'default.updated.message', args: [message(code: 'density.label', default: 'Density'), densityInstance.id])}" 
       redirect(action: "list", id: densityInstance.id) 
      } 
      else { 
       redirect(action: "list", id: densityInstance.id) 
      } 
     } 
     else { 
      flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'density.label', default: 'Density'), params.id])}" 
      redirect(action: "list") 
     } 
    } 

的Rcommodity创建文本框的名字,我把一个println来看看它的值是正确的,现在我不知道该怎么做的价值文本字段是输入的文本字段,它给了我与之前相同的值,但是它给了我一条消息说它已被更新。 该控制器是密度控制器和域密度

任何帮助将不胜感激。感谢:D

回答

1

从正在打印的Flash消息看起来好像实例正在更新(尽管“#ID”位看起来很奇怪 - 是否替换了实际的ID?)。

这可能是

densityInstance.properties = params 

实际上没有被匹配任何实例属性,所以没有之前保存实际上是被改变。你确定你已经命名你的gsp输入字段来匹配你的Density类字段的名字吗?例如,Rcommodity是Density的一个属性?

可能有助于添加gsp页面的表单以及密度域类。

+0

商品是Density的财产,我应该添加Rcommodity以及? – randomizertech 2010-10-15 14:10:15

+0

对此延迟感到抱歉 - 请查看“数据绑定”文档(http://grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.1.6数据绑定)。您的参数(从gsp表单输入名称中设置)需要与densityInstances属性相匹配 - 我无法分辨您称为它们的内容,而是从上面粘贴的其中一行中猜出。 – 2010-10-18 21:23:08

+0

好吧,假设我在第一行有一个字段,我在其中创建了所有这些字段,名称为“commodity”,因此在域中声明。那么创建的是'Rcommodity'我应该将它添加到域以及更新它?这就是你想说的吗? – randomizertech 2010-10-20 16:13:19