2012-06-10 93 views
0

我見過各種各樣的答案類似的問題,但不是這種特殊情況下:的Grails:刷新視圖後提交

我有一個Grails GSP有幾個字段和一個提交按鈕。我想在第一個字段中輸入一個值,點擊提交,然後讓控制器將值返回到其餘字段(包括原始輸入字段)。我想通過簡單的頁面刷新(無AJAX)來完成此操作,並且不涉及數據庫。我可以使用兩個相同但名稱不同的gsp頁面正常工作。我只是打電話給第一個,輸入值,並將提交操作指向第二個。但我希望能夠用一個gsp來做到這一點。我的控制器的簡化版本如下所示:

class CalculatorController { 

    def index = { 
    redirect(action: "input") 
    } 

    def input= {} 

    def calculateValues = { 

     def inputString = params.enterValue 
     def value2 = 'You entered something on the page' 
     [field1: inputString, field2: value2] 
    } 
} 
+0

你有什麼問題?如果params.enterValue存在,您可以檢查calculateValues嗎? – chrislovecnm

+0

如果我唯一的看法是input.gsp,並且提交按鈕調用calculateValues,它會給我提供calculateValues.gsp不存在的錯誤。如果我在calculateValues操作中放置了重定向(action:「input」),則視圖在所有字段中都呈現爲空值。 – user1435174

+1

如果您只想使用一個gsp,則需要在同一個閉包中包含所有邏輯。測試參數是否通過並正確返回正確的值 – chrislovecnm

回答

0

如果您只想使用一個gsp,則需要在同一個閉包中包含所有邏輯。測試參數是否通過並返回正確的值

0

實際上,您不需要在同一個閉包中擁有所有邏輯。只需指定視圖模板calculateValues使用...

def calculateValues = { 
    def inputString = params.enterValue 
    def value2 = 'You entered something on the page' 
    render(view: 'input', model: [field1: inputString, field2: value2]) 
} 

利用渲染方法,你可以有多個控制器動作重複使用相同的GSP視圖。