Я очень новичок в grails, Что я хочу сделать, это загрузить элементы данных из класса enum в поле select (combo box), а затем создать библиотеку тегов для этого.Как использовать и создавать библиотеку тегов для select (combobox) в grails
библиотеки тегов класса
package feedback
import imocha.project.Feedback
import imocha.project.FeedbackType
class FeedbackTagLib {
static namespace = "l"
def enumFeedbackType ={attrs, body ->
attrs.name = "type"
attrs.from = "${FeedbackType.values()}"
out << g.select(attrs.name, attrs.from, attrs.value, attrs.optionKey)
}
}
класс Enum
public enum FeedbackType {
CLA('Complaint'),
CLE('Complement'),
ENQ('Enquiry')
final String value
FeedbackType(String value){ this.value = value }
@Override
String toString(){ value }
String getKey() { name() }
}
Я назвал библиотеку тегов в GSP с этим
<l:enumFeedbackType value="${feedbackInstance?.type}" optionKey ="key" />
Это ошибки
URI /feedback/feedback/create
Class groovy.lang.MissingMethodException
Message No signature of method: org.codehaus.groovy.grails.web.pages.GroovyPage.select() is applicable for argument types: (java.lang.String, org.codehaus.groovy.runtime.GStringImpl, null, null) values: [type, [Complaint, Complement, Enquiry], null, null] Possible solutions: collect(), getOut(), inspect(), every()
вы отсутствующий оператор импорта для перечисления – injecteer
, но она находится под SRC/заводной !? если я делаю импорт, то это как этот импорт src.groovy.FeedbackType? это не может быть принято компилятором –
, вы не можете импортировать класс пакета по умолчанию в класс нестандартного пакета. Таким образом, либо помещаем ваш tag-lib в пакет по умолчанию, либо перечисляем в 'feedback' – injecteer