Где задокументирована функция Grails под названием field(n)?

В каком-то коде Grails, который я читал, я вижу функцию под названием «field()», которая, кажется, делает следующее:

Дан объект вида

def a = [a:b, c:d, e:123]

field(a) создаст строку

a="b" c="d" e="123"

т. е. он переводит эти пары "имя-значение" в форму, подходящую для элемента html/xhtml/xml.

Я искал документацию Grails для этой функции и нигде не нашел ее описания. Откуда это взялось? Является ли он частью одной из других сред, таких как SiteMesh, которые волшебным образом включаются в Grails? (Хотя я не могу найти его и в документации SiteMesh!)

Я попробовал это в своем коде, и это работает, но иногда выдает исключение, и я хочу увидеть реальное определение этой функции и то, как ее предполагается использовать.


person Community    schedule 07.08.2009    source источник


Ответы (1)


Это часть библиотеки тегов Grails, расположенная в этом файле:

src/java/org/codehaus/groovy/grails/plugins/web/taglib/FormTagLib.groovy

Вот его код:

/**
  * A general tag for creating fields
  */
def field = {attrs ->
    resolveAttributes(attrs)
    attrs.id = attrs.id ? attrs.id : attrs.name
    out << "<input type=\"${attrs.remove('type')}\" "
    outputAttributes(attrs)
    out << "/>"
}
person chanwit    schedule 07.08.2009
comment
Спасибо! (У него также есть ошибка, если значение пары имя/значение равно null, оно выдает исключение. На самом деле он должен просто выводить attribute= ) - person ; 07.08.2009
comment
также интересно, что это не задокументировано! opt/local/grails-1.2-M1/doc/api/org/codehaus/groovy/grails/plugins/web/taglib/FormTagLib.html не упоминает об этом - person ; 07.08.2009
comment
Итак, загрузите JIRA и отправьте патч ;-) - person chanwit; 08.08.2009