Ich bin sehr neu zu Grails, Was ich tun möchte, ist das Laden der Daten Elemente aus Enum-Klasse in die Auswahl (Kombinationsfeld) dann erstellen Sie eine Tag-Bibliothek dafür.Wie zu verwenden und zu erstellen Tag-Bibliothek für Select (Combobox) in Grails
Tag Bibliothek Klasse
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 Klasse
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() }
}
rief ich die Tag-Bibliothek in GSP mit diesem die Fehler
<l:enumFeedbackType value="${feedbackInstance?.type}" optionKey ="key" />
Dies ist
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()
Sie die Import-Anweisung für Ihre Enum fehlen – injecteer
aber es ist unter src/groovy !? Wenn ich Import mache, ist es wie dieser Import src.groovy.FeedbackType? Dies kann vom Compiler –
nicht akzeptiert werden. Sie können eine Standardpaketklasse nicht in eine Klasse eines nicht standardmäßigen Pakets importieren. Also, entweder setzen Sie Ihre Tag-Lib in ein Standard-Paket, oder die enum in 'feedback' – injecteer