| 

.NET C# Java Javascript Exception

Contraints, Save und evt. Caching Problem

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.


Contraints, Save und evt. Caching Problem

Redfish - 14.10.2009 09:34
Hallo Leute,

Ich bin es wiedereinmal.... und zwar stehe ich vor einem simplen aber doch für mich nicht lösbaren Problem...

Ich bei ein simples Forum, theoretisch im Gästebuchprinzip. Der Kunde möchte aber dass man von einem Forum spricht... anyway... :)

Ich gebe alle Forumeinträge untereinander aufgelistet aus und zuoberst steht eine Textarea um einen neuen Eintrag zu erstellen respektive wenn einer ausgewählt wurde um diesen auch zu bearbeiten.

Mein Problem ist nun wenn ich ein Forumeintrag ausgewählt habe um diesen zu bearbeiten und dann die Constraints beim Speichern nicht erfülle (folgende Constraints sind definiert: maxSize: 1000 und blank: false), wird der "nicht-constraintskonforme" Forumeintrag in der Textarea ausgegeben, was auch so sein sollte. Leider aber wird der Forumeintrag auch in der Auflistung ausgeben. In der Auflistung aber sollte eigentlich der alte Forumeintrag stehen, da ja das Speichern nicht ausgeführt werden konnte.

Mein Code sieht wie folgt aus:
def forumInstance = Forum.get(params['comment.id'])
forumInstance.properties = params
			
if (!forumInstance.hasErrors() && forumInstance.save()) {
     flash.message = g.message(code:"forum.edited")
     redirect (action: 'show_forum', id: params.id, model: [forumInstance: forumInstance], params: params)
     return
} else {
     def forums = Forum.findAll("From Forum f where f.report = " + params.id + " ORDER BY f.date desc")            
     render(view: "show_forum", id: params.id, model: [forumInstance: forumInstance,forums:forums], params: params)
}

Wie es aussieht wird der "nicht-constraintkonforme" Forumeintrag irgendwie auch gespeichert respektive gecached. Denn via Forum.findAll lese ich alle entsprechenden Forumeinträge aus und dort liefert mir Hibernate den fehlerhaften Forumeintrag obwohl das Speichern gescheitert sein sollte.

Habt ihr mir einen Tipp respektive könnt ihr mir helfen? Ich bin mit meinem Latein am Ende. Theoretisch könnte ich die vorherige Version des Forumposts auslagern und wieder einlesen, was etliche zusätzliche Zeilen Code voraussetzt aber ich denke es gibt da sicher eine hübschere Lösung.

Vielen Dank und Gruss
Redfish


Re: Contraints, Save und evt. Caching Problem

Redfish - 14.10.2009 13:17
Hallo,

Es funktioniert immer noch nicht... sehr speziell... hier der Code von der ganzen Action. Es ist ein create und update in einer Action...
	def save_forum = {
				
		params.date = new Date()
		
		if (!params.version) {
		    def forumInstance = new Forum(params)
		    
	        if (!forumInstance.hasErrors() && forumInstance.save()) {
	            flash.message = g.message(code:"forum.created")
	            redirect (action: 'show_forum', id: params.id, params: [offset: params.offset, max: params.max, sort: params.sort, order: params.order, type: params.type])
	    		return
	        } else {
				def forums = Forum.findAll("From Forum f where f.report = " + params.id + " ORDER BY f.date desc")              
	        	render(view: "show_forum", id: params.id, model: [forumInstance: forumInstance,forums:forums], params: params)
	        }
		} else {
			def forumInstance = Forum.get(params['comment.id'])
			Forum.withTransaction{ status -> 
			    forumInstance.properties = params
			                
			    if (!forumInstance.hasErrors() && forumInstance.save(flush:true)) {
			         flash.message = g.message(code:"forum.edited")
			         redirect (action: 'show_forum', id: params.id, model: [forumInstance: forumInstance], params: params)
			         return
			    } else {
			         status.setRollbackOnly() 
			         def forums = Forum.findAll("From Forum f where f.report = " + params.id + " ORDER BY f.date desc")            
			         render(view: "show_forum", id: params.id, model: [forumInstance: forumInstance,forums:forums], params: params)
			    }
			}
		}
	}

Weiss echt nicht an was es liegt... :( Und Forum.findAll zuoberst bei der Action schreiben nützt auch nichts...

Gruss Redfish


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Contraints, Save und evt. Caching Problem" 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.