Проблемы с классами классов Grails. Я переопределяю конструктор для создания объекта класса домена из файла net.sf.json.JSONObject. Это прекрасно работает, когда я навязываю объект через контроллер. Затем я попытался создать экземпляр его с помощью тестового примера и получил исключение:Grails addTo * не создается
Нет подписи метода: profileplugin.Contact.addToEmails() применим для типов аргументов: (java.lang.String) значения: [что-то @ 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:["[email protected]"],
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); };
};
}
вы могли бы сжать образец проекта, чтобы мы могли посмотреть? – Mengu