| 

.NET C# Java Javascript Exception

Exception wo keine sein sollte

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.


Exception wo keine sein sollte

wuppi - 25.03.2008 16:02
Hallöchen,
ich schreibe an nem Projekt, wo ich unter andrem nach Eingaben suchen kann. Dafür habe ich eine Query in java erstellt mit gettern und settern.
Meine Suchanfrage sieht so aus:
def showSearchResults = {
    	if(request.method == 'POST') 
	InternetSearchQuery query = new InternetSearchQuery()	
	bindData(query, params					
                def criteria = Internetuser.createCriteria()
		def results = criteria {
				and {
				        like('id', '%'+query.id+ '%')
					...
				        if(query.zielgruppeOperator){						                                                                                switch(query.zielgruppeOperator){
						case InternetSearchQuery.ZielgruppeOperator.AR:							                                like('zielgruppe', '%'+query.zielgruppeOperator+'%')
						break
						...	
						}
					}
					
					between('insertdate', query.minDate, query.maxDate+1)
					
				} 
			}
			render(view:'list', model:[internetuserList:criteria])
			}
	}
Ich hab mir alles ausgeben lassen, es funktioniert auch alles bis "render". Da gibt er mir dann diese Exception aus:

Message: InternetSearchQuery$ZielgruppeOperator cannot be cast to java.lang.String
Caused by: java.lang.ClassCastException: InternetSearchQuery$ZielgruppeOperator cannot be cast to java.lang.String

Mein ZielgruppeOperator ist nur eine Combobox. Die muss doch nich in nen String gecastet werden oder?


Re: Exception wo keine sein sollte

christian - 25.03.2008 16:19
Hallo Wuppi,

du übergibst render(view, model) nicht das model sondern deine Abfrage! Probier mal
render(view:'list', model:[internetuserList:results)

Nebenbei: Wozu machst du Folgendes?
if(request.method == 'POST')
Fallst du damit auf die Methode POST beschränken willst, geht das eleganter mit
def allowedMethods = [delete:'POST', save:'POST', update:'POST']
(im Beispiel für die Aktionen delete, save und update).

Gruß
Christian


Re: Exception wo keine sein sollte

christian - 25.03.2008 16:29
Erwartet deine View überhaupt ein Objekt vom Typ internetuserList?

Gruß
Christian


Re: Exception wo keine sein sollte

wuppi - 25.03.2008 16:49
Ich dachte mir, da ich mehrere Eingabefelder habe und unter anderem auch einen Datepicker definiert hab, wäre ne Query sinnvoller. Der Datepicker lässt mir eigentlich keine andere Wahl als ne Query in Java zu erstellen. Ich hab da ein Minimumdate und ein maximumdate. Aber in meiner DB ist nur ein Datum gespeichert. Daher also die Query.
Das funktioniert ja auch schön, wenn ich die Enum Zielgruppe raus lasse. Daher glaube ich, dass er irgendwie mit der Combobox nicht zurecht kommt. Kann das sein?
Wie kann ich denn sonst über Grails die Parameter abfragen?


Re: Exception wo keine sein sollte

christian - 25.03.2008 17:20
wuppi schrieb:
-------------------------------------------------------
> Ich dachte mir, da ich mehrere Eingabefelder habe
> und unter anderem auch einen Datepicker definiert
> hab, wäre ne Query sinnvoller. Der Datepicker
> lässt mir eigentlich keine andere Wahl als ne
> Query in Java zu erstellen. Ich hab da ein
> Minimumdate und ein maximumdate. Aber in meiner DB
> ist nur ein Datum gespeichert.

Es wäre wohl kaum sinnvoll, die Parameter eine Abfrage in der Datenbank zu speichern! Die Parameter werden ja lediglich Bestandteil der Abfrage und man braucht kein extra Objekt, um Abfrageparameter zwischenzuspeichern.

> Das funktioniert ja auch schön, wenn ich die Enum
> Zielgruppe raus lasse.

Die Enum ist evtl. auch schon das ganze Problem. Grails kann natürlich mit Select-Boxen (Comboboxen gibt es in HTML nicht) umgehen. Um sicherzustellen, dass nur bestimmte Werte übergeben werden können ist ein Validator besser (inList).

> Wie kann ich denn sonst über Grails die Parameter
> abfragen?

params.nameDesParameters

Gruß
Christian


Re: Exception wo keine sein sollte

wuppi - 26.03.2008 13:15
Versteh mich nicht falsch, ich bin da noch etwas frisch auf dem Gebiet. Wie und wo muss ich das Datum konvertieren? Kannst du mir ne Art Pseudo-Code mal posten?


Re: Exception wo keine sein sollte

wuppi - 26.03.2008 13:53
Und meinem "between" übergebe ich dann params.datum?


Re: Date-Objekte erzeugen

wuppi - 26.03.2008 15:15
Nein, auch das funktioniert nicht. Da krieg ich diese Exception:

Message: Cannot cast object 'struct' with class 'java.lang.String' to class 'java.util.Date'
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'struct' with class 'java.lang.String' to class 'java.util.Date'

Was ist denn dieses Struct?


Grails-Lösung gesucht

christian - 26.03.2008 15:31
Falls jemand eine Lösung direkt in Grails kennt, kann er sie hier ja noch mal schreiben ...

Gruß
Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Exception wo keine sein sollte" 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.