代码之家  ›  专栏  ›  技术社区  ›  Straightfw

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

  •  0
  • Straightfw  · 技术社区  · 6 年前

    我创建了一个简单的Grails应用程序,连接到Oracle12数据库中的一个表,该数据库应该为那里的数据提供一个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/ 可修改或删除给定值的页面(这正是我试图实现的目标):

    enter image description here

    而在我的例子中,除了第一列,这是我的ID,所有的东西(奇怪的是,除了第一列)都是纯文本。尽管configid列中的值是链接,但都只是指向自身(即 /ConfigTest/index )

    1 回复  |  直到 6 年前
        1
  •  3
  •   andi    6 年前

    脚手架机制需要找到一个名为 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'
        }
    }
    

    至少在Grails3.3的小测试中修复了这个错误。