Плагин taglib, предоставляемый плагином Grails fields , использует соглашение об именах для определения ключа метки, который следует использовать для каждого элемента <input>
, который он генерирует.Я хотел бы изменить детали этого соглашения без непосредственного изменения исходного кода плагина.
Подход, который я рассматриваю, заключается в создании собственного тега lib
class MyBeanTagLib {
static namespace = 'mybean'
private void setLabelKey (attrs) {
if (!attrs.labelKey) {
// in reality calculation of the default key is a bit more complicated :)
attrs.labelKey = 'my.default.key'
}
return attrs
}
// renders a combo box
def select = { attrs ->
attrs = setLabelKey(attrs)
// Now call the bean-fields select tag, passing along attrs
}
// renders a datePicker
def date = { attrs -
attrs = setLabelKey(attrs)
// Now call the bean-fields date tag, passing along attrs
}
}
Мой первый вопросКак вызвать тег, который я пытаюсь украсить.Другими словами, какой код должен заменить комментарий
// Теперь вызовите поля bean-компонентов ...
Я мог бы сделать это:
new BeanTagLib().select(attrs)
Но я сомневаюсь, что это правильный способ вызывать один taglib из другого.
Во-вторых, есть ли более элегантный способ украсить taglib, чем этот?На самом деле тегов гораздо больше, чем просто select
и date
, которые мне нужно декорировать, и код в каждом теге декорирования будет практически идентичен.Я хотел бы устранить это дублирование, если это возможно?