Вам не нужно ${}
в from
опции
g.select(name : searchfield.fieldName,
class : "fillWidth searchfield",
multiple : "true",
from : searchfield.fieldFrom,
optionKey : searchfield.fieldKey,
optionValue : searchfield.fieldValue)
В Groovy кода ${}
способ поставить Groovy выражения в двойных кавычках GStrings, если вы не в GSTRING вы можете просто использовать выражение непосредственно, без упаковки его в ${}
.
Редактировать из вашего комментария
fieldFrom на данный момент является строка, которая будет получить его значение из базы данных. Таким образом, значение в БД является «Car.list()», которое в прототипе мне нужно преобразовать в связанную или исполняемую строку кода.
Обычно не рекомендуется, чтобы ваше приложение выполняло произвольные фрагменты кода Groovy, предоставленные пользователями (по очевидным соображениям безопасности). Пока фрагменты код поступают из безопасного источника, такого как доверенный пользователь с правами администратора, то достаточно справедливым, можно с помощью GroovyShell
def from = new GroovyShell().evaluate(searchfield.fieldFrom)
, но это, вероятно, будет весьма неэффективны, создавая новый загрузчик классов и синтаксический анализ и компиляции весь класс скриптов Groovy каждый раз. Если значения fieldFrom
предназначены для того, чтобы всегда извлекать что-то из базы данных (т. Е. Они всегда будут чем-то вроде Car.list()
или Vehicle.findAllByNumberOfWheelsGreaterThan(2)
, а не произвольным Groovy, например [1,2,3]
), тогда было бы лучше хранить выражения HQL в fieldFrom
и запускать их с помощью executeQuery
def from = AnyDomainClass.executeQuery(searchfield.fieldFrom)
(executeQuery
статический метод GORM, вам нужно вызвать его на определенный класс домена, но он может возвращать результаты любого типа). HQL эквивалент Car.list()
будет «from Car
», эквивалент Vehicle.findAllByNumberOfWheelsGreaterThan(2)
будет «from Vehicle where numberOfWheels > 2
» и т.д.
делание не приводит к ошибке, он анализирует значение как строку, но если searchfield.fieldFrom = Car.list() Я бы хотел, чтобы он получил список доступных автомобилей. Это будет приводиться в таблицу для пользователя – user2498465
@ user2498465, это именно то, что он должен делать. Что такое 'searchField' и как его настроить? –
Поле В этой точке находится строка, которая получит свое значение из базы данных. Таким образом, значение в БД является «Car.list()», которое в прототипе мне нужно преобразовать в связанную или исполняемую строку кода. – user2498465