2009-08-07 2 views
0

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

дается объектом вида

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

поле (а) будет производить строку

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

т.е. он переводит эти пары значений имени в форме Sutiable для HTML/XHTML/xml.

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

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

ответ

1

Это часть Grails тега Lib, расположенный в этом файле:

SRC/Java/орг/Codehaus/заводной/Grails/плагины/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 << "/>" 
} 
+0

Спасибо! (У него тоже есть ошибка, если значение пары имя/значение равно null, оно генерирует исключение. Оно должно действительно просто выводить атрибут = "") – 2009-08-07 18:03:49

+0

также интересно, это не документировано! opt/local/grails-1.2-M1/doc/api/org/codehaus/groovy/grails/plugins/web/taglib/FormTagLib.html не упоминает об этом – 2009-08-07 18:05:44

+1

Итак, пожалуйста, напишите JIRA и отправьте патч;) – chanwit

Смежные вопросы