gpt4 book ai didi

json - Grails addTo* 没有被创建

转载 作者:行者123 更新时间:2023-12-04 19:59:55 24 4
gpt4 key购买 nike

在使用 Grails 域类时遇到问题。我正在覆盖构造函数以从 net.sf.json.JSONObject 构建域类对象。当我通过 Controller 实例化一个对象时,这很好用。然后我尝试通过测试用例实例化它,并得到一个异常:

方法无签名:profileplugin.Contact.addToEmails() 适用于参数类型:(java.lang.String) 值:[something@something.com]

我还应该指出,这似乎适用于某些类,但不适用于其他类。非常令人沮丧——我是 Grails 的新手,所以如果有人能给我指出正确的方向,我将不胜感激。

这是我的域类代码。

package profileplugin

import net.sf.json.JSONObject

class Contact
{
static hasMany =
[
phones: String,
faxes: String,
emails: String,
websites: String,
];

Contact() {}; // standard constructor must be specified, or grails dies
Contact(JSONObject source)
{
source.get('emails').each() { this.addToEmails(it); };
source.get('websites').each() { this.addToWebsites(it); };
source.get('phones').each() { this.addToPhones(it); };
source.get('faxes').each() { this.addToFaxes(it); };
};

}

这是一个示例源 JSON 字符串 ...

[
addresses:[],
phones:["(555) 555-7011"],
faxes:[],
emails:["someone@something.com"],
websites:["http://www.google.com"]
]

最后,这是有效的代码版本(在获得以下反馈后):

class Contact
{
def phones = [];
def faxes = [];
def emails = [];
def websites = [];

Contact() {}; // standard constructor must be specified, or grails dies
Contact(JSONObject source)
{
print source;

source.get('phones').each() { this.phones.add(it); };
source.get('emails').each() { this.emails.add(it); };
source.get('websites').each() { this.websites.add(it); };
source.get('faxes').each() { this.faxes.add(it); };
};

}

最佳答案

检查你的源代码,你的 websites: String, 末尾不应该有 , 我很惊讶它确实编译了。

为 String 类放置 hasMany 关系是没有意义的(除非您想在其上进行数据库事务,否则最好为电话、传真、电子邮件和网站创建域类)。你应该这样重写:

package profileplugin

import net.sf.json.JSONObject

class Contact
{

String[] phones=new String[]
String[] faxes=new String[]
String[] emails=new String[]
String[] websites=new String[]

...

}

然后使用:

this.emails.add(it)

此外,可能更重要的是,您不应该在您的域类中添加业务逻辑,它应该在您的 Controller 、服务或一些外部类中(在src下)目录)。

编辑:实际上它没有正确编译,正确的语法是:

def emails = []
etc...

感谢本

关于json - Grails addTo* 没有被创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8844589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com