2012-10-16 70 views
0

我有兩個問題。首先,我想知道當你點擊控制器時,標籤是如何與其內部的其他標籤進行交互的,具體來說,我有一個標籤的外部,另一個標籤在標籤的內部,form標籤外部的textField位於在控制器內部PARAMS一次,但文本框形式標籤沒有在PARAMS,這是爲什麼?需要了解Grails params的工作原理

我的第二個問題是有標籤周圍工作。我試圖訪問代碼中的值我的參數一旦我打到控制器,他們根本就不在那裏,我有一個右邊的,最後在參數中......但不是。

這是一個.gsp的例子。問題:

<div id="includedNodes"> 
    <g:textField name="happyTextField" value="I. FEEL. HAPPY!" /> 
    <g:select name="selectto" id="selectTo" multiple="true" 
      size="25" from="${['is', 'this', 'working?']}"/> 
</div> 

這裏是控制器:

def includedNodes = params.selectTo 
def otherIncludedNodes = params.selectto 
def textfieldData = params.happyTextField 
def hello = "asdf" // <--- I put a breakpoint here 

一旦斷點被​​擊中,我檢查參數,可以看到的是happyTextField在PARAMS,但selectto不是。

在此先感謝您的幫助。

回答

0

您必須考慮像宏一樣的標籤 - 它們簡化了輸出HTML的過程,但是一旦頁面通過瀏覽器往返,控制器中會發生什麼事情並沒有直接的行爲。因此,您需要查看瀏覽器中的HTML源代碼,以瞭解發生了什麼。在這一點上(對於瀏覽器而言),HTML是否是手寫的,由Grails,Java或PHP生成,它只是HTML。

在控制器端,它看到的只是標準的HTTP請求。所以你需要看看瀏覽器發送的請求參數。

因此,對於第二個問題,請查看瀏覽器中的HTML源代碼,以瞭解它爲什麼不發送selectto參數。也許你在提交之前沒有在表單中選擇一個/一些<option> s,因爲瀏覽器只發送了selected="selected"的選項值?

1

做一個視圖源,或者使用firefox來查看實際正在創建的HTML類型。確保您的標籤外沒有嵌套標籤或輸入。您也可以使用插件Httpfox查看瀏覽器正在發送到服務器的內容。