2017-12-04 3 views
0

Ich bin ziemlich neu in Grails und ich habe einige bereits vorhandene Tastenfunktionalität geändert, so dass es nun 2 Parameter an den Controller senden sollte. Mit Hilfe von this tutorial Ich habe geschrieben:Grails Formular g: TextFeld Parameter zu Controller

gsp:

<div class="modal fade" id="myModal" role="dialog"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"><button type="button" class="close" data-dismiss="modal">&times;</button><h4 class="modal-title">Some Title</h4></div> 
      <div class="modal-body"> 
       <g:form> 
        <div class="input-group"> 
         <span class="input-group-addon">Parameter 1</span> 
         <g:textField name="parameter1" size="24" class="form-control" /> 
        </div> 
        <div class="input-group"> 
         <span class="input-group-addon">Parameter 2</span> 
         <g:textField name="parameter2" size="24" class="form-control" /> 
        </div> 
        <g:actionSubmit action="myAction" value="Go" class="btn btn-success" 
            data-toggle="tooltip" data-placement="top" 
            title="${grailsApplication.config.myTitle}" /> 
       </g:form> 
      </div> 
     </div> 
    </div> 
</div> 

MyController:

// Though it is not mentioned in the tutorial, I've added 2 class properties. 
// Otherwise I'd get a groovy.lang.MissingPropertyException 
def parameter1 
def parameter2 

def myAction = { 
    doSomething(parameter1, parameter2) 
} 

// previously : 
// def myAction = { 
//  doSomething() 
// } 

Die beiden Parameter sind 'null', wenn die Methode aufgerufen wird. Was kann ich tun, um die Parameter zur Controller-Methode zu machen?

Dateinamen, Importe und ähnliche Dinge sollten hier nicht das Problem sein, da der Aufruf der Funktion ohne Parameter gut geht. Das Modal ist neu für den Code, da es zum Abrufen der Werte von Parameter1 und Parameter2 verwendet wird. Das Modal selbst funktioniert gut, solange die Parameter nicht in der Signatur der Controller-Methode sind.

Ich habe versucht "Grails sauber" nach this answer. Grails Version 2.5.4

Antwort

1

Versuch mit diesem

// def parameter1 // you do not need this 
// def parameter2 // you do not need this 

def myAction = { 
    doSomething(params.parameter1, params.parameter2) 
} 
+0

Präzise Antwort für dieses Problem. Vielen Dank! – philburns

1

bin ich der genaue Version nicht sicher, aber von Grails 2.x statt Schließungen müssen Sie Methoden verwenden, um Aktionen eines Controllers zu definieren. Dieser Code sollte

arbeiten
def myAction() { 
    doSomething(params.parameter1, params.parameter2) 
} 

Oder es könnte so sein, vorausgesetzt, beide Parameter Strings sind

def myAction(final String parameter1, final String parameter2) { 
    doSomething(parameter1, params) 
} 

In dem Beispiel, das Sie das Formular nicht teilen eine Zielaktion definieren, so dass Sie das gehen sollte aktuelle Aktion mit der Post-Methode