2017-12-04 10 views
0

저는 Grails에 새로운 것이므로 이전에 기존 버튼 기능을 수정하여 컨트롤러에 2 개의 매개 변수를 보내야합니다. this tutorial의 도움으로 내가 작성했습니다 :Grails form g : 컨트롤러에 대한 textField 매개 변수

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() 
// } 

두 개의 매개 변수는 메소드가 호출 될 때 '널 (null)'이다. 매개 변수가 컨트롤러 메소드로 처리되도록하려면 어떻게해야합니까?

함수 호출이 매개 변수없이 제대로 수행되므로 파일 이름, 가져 오기 및 모든 것이 문제가되지 않아야합니다. 이 모달은 매개 변수 1과 매개 변수 2의 값을 가져 오는 데 사용되므로 코드에 새로운 기능입니다. 매개 변수가 컨트롤러 메소드의 서명에없는 한 모달 자체는 잘 작동합니다.

this answer에 따라 "grails clean"을 시도했습니다. 이

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

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

답변

1

시도 나는 정확한 버전의 모르겠지만 Grails의 2.x를 대신 폐쇄에서 당신은 컨트롤러의 동작을 정의하는 방법을 사용해야합니다. 두 매개 변수가 문자열 가정이 코드는

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

작동합니다 아니면 이렇게 될 수

당신이 가야한다, 그래서 목표 행동을 정의하지 않는 양식을 공유하는 예에서
def myAction(final String parameter1, final String parameter2) { 
    doSomething(parameter1, params) 
} 

post 메서드를 사용하는 현재 작업

+0

이 문제에 대한 정확한 대답입니다. 감사! – philburns