#grails #groovy
Вопрос:
class Area {
String name
String description
static constraints = {
}
_
class SearchIndexing {
String search
Area area
static constraints = {
}
}
_
<%
def area = cm.Area.get(1)
def si = new cm.SearchIndexing()
def concat
concat = area.name // i wanna join here more things with much bigger class
si.search = concat
si.area = area
si.save()
out << searchIndexing.list()
%>
ошибка:
No signature of method: cm.SearchIndexing.save() is applicable for argument types: () values: [] Possible solutions: wait(), any(), wait(long), any(groovy.lang.Closure), isCase(java.lang.Object), use([Ljava.lang.Object;)
Ответ №1:
Конечно, у вас нет начального знака , т. е.:
def temp = obj2.prop1 " " ...
Почему бы не попробовать более классный способ, например:
def temp = "$obj2.prop1 $obj2.prop2 ..."
Или:
def temp = [ obj2.prop1, obj2.prop2 ].join( ' ' )
Комментарии:
1. я обновил пример с реальной проблемой. пожалуйста, взгляните сейчас. Я пытаюсь сделать это, потому что это не сработало в контроллере, это дало мне ту же ошибку, поэтому я решил попробовать в меньшем классе в заводном стиле внутри страницы gsp.
2. @Виктор , я даже не уверен, что ты сможешь сделать то, что пытаешься в a
gsp
, это должно быть в контроллере. Даже если это возможно, смешивание презентации и логики всегда оказывается действительно плохой идеей…
Ответ №2:
Из того, как вы создаете экземпляр SearchIndexing
def si = new cm.SearchIndexing()
похоже, это внутренний класс. Я не думаю, что доменный класс может быть внутренним классом, что объясняет, почему у него нет save()
метода.