Я создал приложение Grails 4.0, используя профиль VUE, и использую представления JSON (http://views.grails.org/latest/#_json_views) и все работает правильно, но я не нашел способа использовать доменные методы в шаблоне .gson
Пример, который отлично работает:
Класс домена Person.groovy
class Person {
String firstName
String lastName
String fullName(){
return "$firstName $lastName"
}
}
PersonController
class PersonController {
def show(){
respond Person.get(params.id)
}
}
/views/человек/_person.gson
model {
Person person
}
json {
lastName person.lastName
firstName person.firstName
//fullName person.fullName() -- this line doesn't compile
}
Это базовый пример того, что я пытаюсь сделать, но я не могу ничего подобного скомпилировать, и я не видел в документах, возможно ли это вообще. Я также попытался вызвать метод в классе домена «getFullName()», а затем в файле gson выполнить «fullName person.fullName», но это тоже не сработало.
Есть ли способ использовать методы класса домена в файле .gson?
ОБНОВЛЕНИЕ: это пример журнала трассировки стека с функцией getFullName().
[Static type checking] - No such property: fullName for class: Person
@ line 8, column 8.
fullName person.fullName
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:311)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1102)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:645)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:623)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:600)
at grails.views.ResolvableGroovyTemplateEngine$_createTemplate_closure2.doCall(ResolvableGroovyTemplateEngine.groovy:430)
... 71 common frames omitted
И это пример метода fullName()
[Static type checking] - Cannot find matching method Person#fullName(). Please check if the declared type is correct and if the method exists.
@ line 8, column 8.
fullName person.fullName()
^
1 error
getFullName()
, но это не то, что у него есть. Что бы я сделал, так это иметь методgetFullName()
, сделатьfullName
переходным, а затем в ссылке представленияperson.fullName
, но причины, которые являются лучшей идеей, чем когда он/она делает, не помогают устранить ошибку компиляции, которую задает вопрос о. - person Jeff Scott Brown   schedule 21.08.2019