2012-06-10 2 views
0

Я видел различные ответы на подобные вопросы, но не для этого конкретного случая:Grails: Обновить вид после представить

У меня есть GSP Grails с несколькими полями и кнопка отправки. Я хочу ввести значение в первом поле, нажать «Отправить» и вернуть значения контроллера в остальные поля (включая исходное поле ввода). Я хочу сделать это с помощью простого обновления страницы (без 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

В чем проблема, связанная с этим? Можете ли вы просто проверить в calcValues, если params.enterValue существует? – chrislovecnm

+0

Если мой единственный вид - input.gsp, а кнопка submit вызывает calculateValues, это дает мне ошибку, которая вычисляет значениеValues.gsp не существует. Если я поставлю перенаправление (действие: «ввод») внутри действия calculateValues, представление отображает с нулевыми значениями во всех полях. – 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.

Смежные вопросы