2011-08-11 76 views
2

這是在Grails上! 這是一個非常基本的東西,我無法理解。如何從網頁表單上的文本框中獲取輸入

我有這個在我的index.gsp中

<g:form name="testForm" url="[controller:'test',action:'index']"> 
    <g:textField name="Input A" value="${Input1}"> </g:textField> 
    <g:textField name="Input B" value="${Input2}"> </g:textField> 
</g:form> 

我也有這個在我班的TestController:

class TestController { 

    def index = { 
     def Input1 
     def Input2 
    } 
} 

我想獲得用戶在網頁上輸入的兩個輸入端和將它們保存到控制器上的相應字段(Input1,Input2)。

我該怎麼辦?

感謝

回答

5

你可以寫你的形式是這樣的:

<g:form name="testForm" controller="test" action="index"> 
<g:textField name="Input1" value="${Input1}"> </g:textField> 
<g:textField name="Input2" value="${Input2}"> </g:textField> 
<g:actionSubmit value="Send to controller" action="index"/> 
</g:form> 

注意,在這種情況下,

  1. 的控制器參數g:表格標籤是不需要的,它按慣例使用
  2. 行動也可能根據您的行程被刪除(和Grails的版本),但大部分的時間,這是您指定的形式是什麼使的Grails知道在哪裏可以提交
  3. 參數稍微不同步「輸入A」 - >「輸入1」

然後在控制器

class TestController { 

    def index = { 
    def Input1 = params.Input1 
    def Input2 = params.Input2 
    ["Input1": Input1, "Input2": Input2] 
    } 
} 

由此,數值將被正確地呈現(返回的模型內)

+0

它不工作。我仍然得到空值。這也返回null:log.error(params)。 gsp代碼位於index.gsp中。我沒有專門針對測試控制器的視圖。可能是這個問題? –

+0

您的視圖應該命名爲index.gsp,就是這樣。默認操作是索引,所以使用的默認視圖是vies/test/index.gsp,控制器中的默認操作是索引。我實際上修復了參數名稱input1 - > Input1和input2 - > Input2 –

0

檢查params地圖。

您可以通過它的名稱訪問字段:

def input1 = params.input1; 
def input2 = params.input2 
1

您從隱變量接收的形式參數「 params「。難道在你的控制器log.error(params),你就會知道他們是如何通過。您可以訪問您的參數,如 params."Input 1"

注意,有整齊的方式從一類處理多個輸入,例如給定一個域類:

class Test { 
    String a; 
    String b; 
} 

你可以有一個表格:

<g:form name="testForm" controller="test" action="index"> 
    <g:textField name="test.a" value="${Input1}"> </g:textField> 
    <g:textField name="test.b" value="${Input2}"> </g:textField> 
</g:form> 

和Controller你做:

class TestController { 

    def index = { 
    def testInstance = new Test(params.test) 
    } 
} 

但是這一招,你應該只在管理領域使用或因爲有一些安全考慮需要完成。

0

因此,有一個提交按鈕的作品。

<g:form name="testForm" controller="test" action="index"> 
    <g:textField name="input1" value="${input1}"> </g:textField> 
    <g:textField name="input2" value="${input2}"> </g:textField> 
<g:submitButton name="Submit" value="Submit"></g:submitButton> 
</g:form> 

...

class TestController { 

     def index = { 
     def Input1 = params.input1 
     def Input2 = params.input2 


     render(Input1+"<br />") 
     render(Input2+"<br />") 
     } 
} 
-2
class TestController { 

     def index = { 
     def Input1 = params.input1 
     def Input2 = params.input2 


     render(Input1+"") 
     render(Input2+"") 
     } 
} 
相關問題