| 

.NET C# Java Javascript Exception

Constraints Frage

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.


Constraints Frage

nullable - 29.02.2008 21:30
Hallo,

in meiner test Anwendung stehen meine Objekte "Project" und "Task" in einer 1:N Beziehung (also jeder task wird genau zu einem Project zugeordnet). Task hält eine propertie auf Project.

class Task {
	String title	
	Date dateCreated
	String description
	Project project		
		
	static belongsTo = [Project]
		
	static constraints = {
		title(blank: false)
		project(nullable: false)		
		startDate()
		description(maxSize: 1500, nullable: true)		
	}
		

	String toString(){
		return title
	}

}

class Project {
	String title	
	Date dateCreated
	String description		

	static hasMany = [tasks:Task, users:User]	
	static belongsTo = [User]	
	
	static constraints = {
		title(blank: false)
		startDate()
		description(maxSize: 1500, nullable: true)		
	}
	
	String toString(){
		return title
	}
	
}

Über Select Feld kann man beim Anlegen eines Tasks ein Projekt auswählen, dem der Task zugeordnet werden soll.

<g:select name="project.id" from="${user.projects}" value="${task.project?.id}" noSelection="['0':'-Choose a project-']" optionKey="id"/>

Mein Problem ist nun folgendes. Obwohl die Project propertie Task "nullable:false" ist (was dem default wert entspricht soweit ich weiß), wird das bei der Validierung scheinbar nicht beachtet. Ich kann einen Task mit einem null Project anlegen, was eigentlich nicht funktionieren soll.

Jedenfalls bin davon ausgegangen, dass eine automatische Validierung beim beim save() stattfindent. Das Binding der Parameter klappt auch. Anbei noch meine save action im TaskController

def save = {
    		
        def task = new Task(params)        //hier geschieht das dynamische binden oder?
                                                      
        if(!task.hasErrors() && task.save()) {               //und an dieser stelle wird validiert?
            flash.message = "Task ${task.id} created"
            redirect(action:show,id:task.id)
        }        
        else {
            render(view:'create', model:[task:task], user: User.findById(session.user.id))
        }
    }


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Constraints Frage" 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.