尽管有脚手架,Grails 应用程序不允许修改值

Grails app not allowing value modifications despite scaffolding

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

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 table 中的所有数据都正确显示,但在 table 中都是纯文本,不可点击links 用于允许您更改它们的每个值(根据官方指南,它们 should be)。这是为什么?

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

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

而在我的例子中,所有内容(奇怪的是,除了第一列,这是我的 ID)只是纯文本。不过,configid 列中的值是 links,但都指向它自己(即 /ConfigTest/index)。

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

只需将您的域 class 更改为

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 的小测试为我修复了这个错误