2016-05-08 9 views
1

Ich möchte Fehler Validierung auf eine andere Seite senden zurück (add), so habe ich das für meine save Aktion:Grails `respond` null zurück

@Transactional(readOnly = false) 
def save(AddDomainCommand command) { 

    if (command.validate() && session.isLoggedIn && session.publisher) { 
     // do some stuff 
     return redirect(controller: 'Widget', action: 'generate') 
    } 

    log.info("Validation failed for $command") 
    respond view: "add", model: [domain: command] 
} 

Es Fehler mit javax.servlet.ServletException: Could not resolve view with name 'save' in servlet with name 'grailsDispatcherServlet'

Wenn ich Drucken Sie die Antwort von respond, ich bekomme null! Das erklärt, warum es zu save geht, denn das ist die Konvention für den Namen der Aktion.

Ich brauche es, um zu der Ansicht zurückzukehren, von der es kam (add.gsp), aber Grails respond ist Null und damit standardmäßig save.gsp. Irgendwelche Ideen?

Antwort

2

respond verwendet eine andere Syntax und wird verwendet, wenn Sie mehrere Clienttypen basierend auf MIME-Typ unterstützen möchten, z. JSON und/oder XML für einen REST-Client und HTML/GSP für einen normalen Browser-Client. Wenn Sie nur add.gsp verwenden möchten HTML zu machen, verwenden Sie render:

render view: 'add', model: [domain: command] 
+0

Dies anderswo obwohl funktioniert. Ich benutze 'Antwort anzeigen:" hinzufügen ", Modell: [a: b] und es funktioniert ordnungsgemäß. –

+0

Das Gleiche passiert, wenn ich 'render' anstelle von' respond' verwende –