【问题标题】:Grails app not allowing value modifications despite scaffolding尽管有脚手架,Grails 应用程序仍不允许修改值
【发布时间】:2019-01-09 10:06:39
【问题描述】:

我创建了一个简单的 Grails 应用程序,连接到 Oracle 12 数据库中的一个表,该数据库应该为那里的数据提供一个 CRUD。所以我有一个像这样的简单模型类:

package moduleprototype

class ConfigTest {
    int configid
    String name
    String type
    String value
    String description
    int status

    static constraints = {
        version false
        id column: 'CONFIGID', name:'configid',  type: 'integer'
    }
}

还有控制器:

package moduleprototype

class ConfigTestController {

    static scaffold = ConfigTest
}

但是,当我在浏览器中导航到控制器时,虽然 config_test 表中的所有数据都正确显示,但表中的所有数据都是纯文本,而不是每个值的可点击链接,这将允许您更改它们(根据官方指南,他们should be)。这是为什么?

脚手架在控制器中,所以理论上它应该可以工作,根据我在教程应用程序中的记忆,这足以让它自动允许浏览器内修改界面,所以我猜这里的原因是我正在使用外部数据库而不是内置数据库?我该如何解决这个问题,以便所有值再次可点击、可修改和可删除?

编辑:为了更好地说明我的问题,这里有一个来自教程应用程序的脚手架示例,其中每一行中的每个值都是指向 /show/ 页面的链接,其中可以修改或删除给定值(这就是我正在努力实现):

在我的情况下,所有内容(奇怪的是,除了第一列,即我的 id)都是纯文本。但是,configid 列中的值是链接,但都只是指向自身(即/ConfigTest/index)。

【问题讨论】:

  • 不确定每个字段都应该可以从列表视图中点击,但您应该有一个可点击的链接,虽然它会带您到显示视图,您可以从中导航以编辑 IIRC?
  • @MikeW - 我添加了我的意思的屏幕截图 - 在教程应用程序中,简单的脚手架使应用程序为每个值添加超链接,将它们指向它们对应的 /show/ 视图,而在这里,它们重新全部(除了 ID 列)纯文本。
  • 我认为图像中的链接是链接的原因是它们是单独的域,您的模型由字符串和整数组成,因此您可以在域编辑页面上编辑所有这些
  • @MikeW - 不,在这里的示例中,Make 是一个域,但 Name 是一个简单的字符串参数,但它是可点击的 :(
  • Name 是编辑您当前正在查看的域的链接,Make 是指向 Make 域的链接

标签: java database oracle grails grails-orm


【解决方案1】:

脚手架机制需要找到一个名为id的字段才能工作。

只需将您的域类更改为

package moduleprototype

class ConfigTest {
    int id //int configid
    String name
    String type
    String value
    String description
    int status

    static mapping /*constraints*/ = {
        version false
        id column: 'CONFIGID', name:'id' /*name:'configid'*/,  type: 'integer'
    }
}

至少通过 grails 3.3 的小测试为我解决了这个错误

【讨论】:

  • 就是这样!非常感谢,立即解决了我的问题:)
猜你喜欢
  • 2015-03-12
  • 2017-02-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
相关资源
最近更新 更多