| 

.NET C# Java Javascript Exception

Autovervollständigung

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Dieser Artikel zeigt wie man eine Autovervollständigung implementiert. Benötigt wird dafür ein JavaScript-Framework, in diesem Beispiel Mootools. Hierfür kann man das [Mootools-Plugin|http://www.grails.org/Mootools+Plugin] für Grails laden.
Die Scource für den Mootools-Autocompleater gibt es hier: [http://digitarald.de/project/autocompleter/|http://digitarald.de/project/autocompleter/]. Die Dateien (CSS und JS) muss man an die entsprechenden Stellen unter projekt-name.web-app kopieren.
!! GSP mit JavaScript
%%prettify
{{{
<html>
<head>
%{--Das CSS für den Autocompleter--}%
<link rel="stylesheet" href="${resource(dir: 'css', file: 'Autocompleter.css')}"/>
%{--aus dem Mootools Plug in--}%
<g:javascript library="mootools"/>
%{--JS-Dateien für den Autocompleter. Dateien liegen direkt unter projekt-name.web-app.js--}%
<g:javascript src="Autocompleter.js"/>
<g:javascript src="Autocompleter.Request.js"/>
<g:javascript src="Observer.js"/>
%{--hier das JavaScript für den asynchronen Aufruf--}%
<g:javascript>
document.addEvent('domready', function() {
var url = '${createLink(controller: 'myDomain', action: 'search')}' ;
new Autocompleter.Request.HTML('search', url , {
'indicatorClass': 'autocompleter-loading'
});
});
</g:javascript>
</head>
<body>
%{--Das Eingabefeld für die Suche--}%
<g:textField name="search" id="search"/>
</body>
</html>
}}}
/%
!! Die Domain-Klasse
%%prettify
{{{
class MyDomain {
String name
}
}}}
/%
!! Der Controller
%%prettify
{{{
class MyDomainController {
def search = {
def list = new StringBuffer()
def query = "${params.value.trim()}%"
def results = MyDomainfindAllByNameILike(query. [sort:'name'])
results.each{
list << "<li>${it.name}</li>"
}
render list.toString()
}
}
}}}
/%
Wie funktioniert das?
Der Grails-Teil für die Autovervollständigung ist ziemlich trivial. Es bedarf einer Domainklasse mit dem Attribut(en) nach denen man suchen will. Und einer Action in einem Controller. Die Action wird durch das JavaScript in der GSP aufgerufen sobald irgendwas in das Eingabefeld getippt wird. Die Action generiert eine HTML-Liste mit Einträgen, die durch das JS mit Hilfe des CSS als Popup unter dem Eingabefeld eingeblendet wird.
Werfen wir noch einen kleine Blick auf das JS. Wir benutzen die Klasse Autocompleter.Request.HTML, deren Konstruktor benötigt die id von dem Eingabefeld, dass er beobachten soll, die URL von der Action die er aufrufen soll, sobald jemand etwas in das Eingabefeld tippt und eine JS-Objekt mit weiteren angaben zur Darstellung des Popups (weitere Information dazu gibt des auf der Seite zu dem [Mootool-Autocompleater|http://digitarald.de/project/autocompleter/]).

Diese Seite zeigt Informationen zu "Autovervollständigung" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.