当前位置: 首页 > 面试题库 >

Grails:在地图构造函数中设置瞬态字段

越源
2023-03-14
问题内容

我正在尝试将属性的Maps保留为单个JSON编码的列

我遇到的问题是,显然 无法在默认地图构造函数中设置瞬时属性 。给定任何瞬态场:

class Test {
    //...
    String foo
    static transients = ['foo']
}

似乎地图构造函数(Grails以各种方式覆盖)只是丢弃了瞬态字段:

groovy:000> t = new Test(foo:'bar')
===> Test : (unsaved)
groovy:000> t.foo
===> null

虽然直接分配(通过setter方法)可以按预期工作:

groovy:000> c.foo = 'bar'
===> bar
groovy:000> c.foo
===> bar

有没有办法让地图构造函数接受瞬态字段?

或者更确切地说:有没有Map比链接的问题中显示的方法更好的方法来将a保留为单个JSON编码的DB字段?

这是完整的示例:

import grails.converters.JSON

class JsonMap {
    Map data
    String dataAsJSON

    static transients = ['data']
    def afterLoad()      { data = JSON.parse(dataAsJSON) }
    def beforeValidate() { dataAsJSON = data as JSON }
}

我可以data使用setter进行设置(然后将其转换为dataAsJSON),但不能使用map构造函数。


问题答案:

GORM中的地图构造函数使用数据绑定机制,并且默认情况下,瞬态属性不可进行数据绑定。但是您可以使用可绑定约束来覆盖它

class Test {
    //...
    String foo
    static transients = ['foo']

    static constraints = {
        foo bindable:true
    }
}


 类似资料:
  • 我的应用程序获取资源字符串占位符令牌列表,它应该使用给定值更改令牌。 这种资源的一个例子是:“ 。 所以我切换到的其他方法: 这产生了以下功能: 所以现在我能做的是: 但是现在我需要在内部函数中分解 ,以便模板文字知道值 顺便说一句——我已经试过了——没有成功: 问题 如何在内部函数中展平以便将具有已知的本地值? 注意,我不喜欢使用正则表达式解决方案,因为在模板文本中有换行符。此外,这些资源有意采

  • 问题内容: 在React组件中,最好是在Constructor()或componentWillMount()中设置初始状态? 要么 问题答案: 使用ES6类时,最好在构造函数中使用,但不要使用API,而是这样做: 另外,如果您有可用的类属性(Bab期1),则可以执行以下操作:

  • 问题内容: 到目前为止,我已经看到了两种在Java中设置变量值的方法。有时使用带有参数的构造函数,而其他setter方法则用于设置每个变量的值。 我知道,一旦使用“新”关键字实例化了一个类,构造函数就会在类内部初始化一个实例变量。 但是,什么时候使用构造函数,何时使用setter? 问题答案: 当您要创建对象的新实例时,应使用构造函数方法,该实例的值已填充(准备使用的对象中已填充值)。这样,您无需

  • 我正在构建一个API并使用swagger测试endpoint。我有一个产品: 在这个DTO中,我想使用在我的代码中使用的Price类。价格类如下所示: 但是由于私有设置器在类中使用,我无法使用swagger设置这些值(它在这些上具有属性)。我真的很喜欢这种拥有私有设置器并使用构造函数设置值的方法,顺便说一句,这是公共的。有没有办法我可以使用swagger为类设置值,并且仍然在属性上使用私有设置器?

  • 我们正在构建一个与远程API通信的webapp。我想这样设计这个远程API的客户端: 关键是,我想在构建期间将凭据传递给这个客户端,并让所有其他方法使用这些凭据。我的第二个要求是我希望这个实例在会话中。 我在这里发现了如何传递动态构造函数参数。 我在这里发现了如何创建会话属性。 但我想不出一种方法来结合这两种技术。据我所知,您必须在自己的类getter方法中实例化会话属性。这种类似getter的方

  • 我想让我的子组件有一个ref,但是我不希望用户在创建组件时必须指定ref。所以说我有这样的东西: 我希望父组件能够访问子组件的状态。最简单的方法是为每个组件添加一个ref,但我希望这是在函数中完成的,以便从最终用户那里抽象出它,因为我希望这些组件被通用化。 有没有一种干净的方法可以让父组件访问子组件的状态,例如当创建子组件时,您有以下内容: 因此,在父类内部,我可以执行以下操作: 因此,我希望能够