Groovy / Grails: заполнить заполнитель строки текущим экземпляром - PullRequest
1 голос
/ 05 сентября 2011

Я действительно новичок в groovy / grails, и я хочу реализовать следующее:

В Groovy.config объявить строку с заполнителем:

urls.sampleUrl = "http://foo/bar/${person.name}.jpg"

Позже в другом файле я хочучтобы заполнить местозаполнитель текущим экземпляром объекта person:

private void updateUrls(Person person)
{
      def sampleString = urls.sampleUrl;
}

sampleString должно быть, например: _ http://foo/bar/anthony.jpg Но вывод: _ http://foo/bar/[:].jpg

Как я мог решить эту проблему?

... конечно, код, вероятно, неверен, я знаю, но это просто для того, чтобы вы поняли мою проблему; -)

Спасибо за помощь.

Привет.

1 Ответ

1 голос
/ 05 сентября 2011

попробуйте использовать

urls.sampleUrl = "http://foo/bar/${->person.name}.jpg"

, это превратит его в строку GString.Закрытие будет выполнено при применении .toString ().

пример:

def person = [name: 'jim']
def sampleUrl = "http://foo/bar/${->person.name}.jpg"
println person.name
println sampleUrl
person.name = 'jeff'
println sampleUrl

Возможно, вы столкнулись с проблемой с

  • сфера person.name.Он должен быть определен до определения GString
  • самой конфигурации.Если это файл свойств, я думаю, он не знает о GStrings

Так что вы также можете просто использовать замену, как показано ниже:

def person = [name: 'jim']
def sampleUrl = "http://foo/bar/{0}.jpg"
println person.name
println sampleUrl.replace('{0}',person.name)
person.name = 'jeff'
println sampleUrl.replace('{0}',person.name)
...