| 

.NET C# Java Javascript Exception

Die Eigenschaft ... darf nicht null sein

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.


Die Eigenschaft ... darf nicht null sein

Daniel87 - 03.11.2008 17:49
Hallo, gleich vorweg, ich bin der absolute Anfänger, also habt bitte ein wenig Verständnis ^^
Ich hatte folgendes als einführendes Beispiel für mich selber gedacht. Eine Art einfaches Nachrichten und Kommentarsystem.

Das hier ist meine Message Klasse
class Message {
	Message parent
	
	String name
	String topic
	String content
	SortedSet replys
	Date created = new Date()
	
	static hasMany = [replys: Message]
	
	static constraints = {
		name(blanke: false)
		topic(blank: false)
		content(blank: false)
	}
}

Der Rest wurde mit "grails generate-all Message" erstellt.

Der Gedanke dahinter ist, dass ein erster Beitrag ja nichts anderes ist als eine Antwort auf einen Beitrag, nur das dieser kein "parent" hat.
Eigentlich müsste das ja auch funktionieren, doch er will unbedingt, dass die variable "parent" ausgefüllt wird, doch wenn es noch keinen "Message" gibt geht das ja schlecht ^^
Gibt es eine Möglichkeit das Feld optional zu machen

Sonst würde ich mir denken, dass ich ne Klasse für eine rootMessage und eine replyMessage mache und die beide von dem gleichen Interface Message erben. Werde dieser Ansatz sinvoller?

Gruß
Daniel




Nachtrag: 03.11.08, 18:31
Ich habe es jetzt auch auf einer anderen Weise getestet, leider mit nicht zu großem Erfolgt :(
Hier meine jetztige Implementierung:
class Message{
	String name
	String topic
	String content
	SortedSet replys
	Date created = new Date()
	
	static hasMany = [replys: ReplyMessage]
	
	static constraints = {
		name(blanke: false)
		topic(blank: false)
		content(blank: false)
	}
}

class ReplyMessage extends Message{
	Message parent
}

Wie oeben, alles erstellt mit generate-all *Klasse*

Das Funktioniert soweit aber nur bedingt.
Eine Message kann ich erstellen, auch eine ReplyMessage, doch wenn ich dann im View zu einer Message bin steht dort bei "Replays: Message: null"
Wenn ich da drauf drücke komme ich noch zu meiner ReplyMessage

Schreibe ich jedoch nun eine zweite ReplyMessage zum ersten Beitrag geht gar nicht mehr. Wenn ich versuche das View für die Message zu öffnen kommt ein Fehlerfenster (nicht aufgepop sonder halt im Browser)

Bitte helft mir ^^

Vielen Dank




Nachtrag: 03.11.08, 23:42

Ich konnte mittlerweile mein Problem (teilweise) selber lösen, idem ich in der Klasse Message
SortedSet replys
komplett gestrichen habe.

Bleiben leider immer noch zwei Fragen.
Wie sieht es aus mit meiner ersten Implementierung in einer einzigen Klasse, ist dies irgendwie möglich?

Und nun die wichtigste, warum zeigt er mir im edit view bei einer Message unter reply immer nur
Replays: Message: null
das dan halt je nachdem wieviele replys ich gemacht habe.
Ich habe ein wenig rumgetestet, wenn ich das inherites bei der Klasse ReplyMessage weg mache (was absolut keinen Sinn macht!!!, nur zu Testzwecken) kann ich zwar nichts mehr ausfüllen, jedoch zeigt er dann auch normale IDs bei dem Feld reply an...?
Ich bin echt Ratlos ^^

Ich teste dann mal weiter, hoffe das noch eine Antwort kommt :)


Re: Die Eigenschaft ... darf nicht null sein

saurier - 04.11.2008 13:28
Hallo Daniel,

auf den ersten Blick ist Deine erste Version schon ok. Du musst aber
in den constraints ein:
parent(nullable:true)
hinzufügen. Wie Du selbst sagst, muss es ja kein parent geben.

Gruß, Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Die Eigenschaft ... darf nicht null sein" 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.