Заполнение полей просмотра из контроллера в Grails - PullRequest
0 голосов
/ 17 ноября 2011

Я пытаюсь загрузить значение в поле представления из действия на контроллере.Как мне указать конкретное поле, которое я хочу загрузить?В .NET это было бы примерно так: в событии нажатия кнопки this.txtName.Text = "John".Я не понимаю, как это сделать с контроллера и, в частности, как ссылаться на поле зрения.Я пытался использовать объект params, но он становится нулевым.Я знаю, что приступаю к действию на основании использованных операторов println.

Вот соответствующие фрагменты кода:

в представлении:

<td valign="top" class="value ${hasErrors(bean: planetInstance, field: 'name', 'errors')}">
  <g:textField name="name" value="${planetInstance?.name}"/>
</td>
<td class="load">
  <g:actionSubmit value="Load" action="nameLoad"/>
</td>

изконтроллер:

def nameLoad = {
    // I want to reference and load the "name" textField from the view
}

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Я не могу сказать из вашего кода, но вы, возможно, забыли отобразить переменную name в действии вашего контроллера nameLoad:

class YourController{    
    def nameLoad = {
        def name = Planet.get(params.id).name //This can be whatever you need it to be to get the correct value assigned to the "name" variable.  Here I assume you have a domain class called "Planet" which may or may not be the case.
        return [name:name] //This is where you map key/value pairs.  The name of the key is what you will type to access the value in your view.  The value is the name of the variable you are dealing with, in this case "name".
    }
}

При настройке кода выше Grails будетПредположим, что в папке YourController есть представление с именем nameLoad.Таким образом, URL будет выглядеть примерно так:

http://localhost:8080/yourapp/yourcontroller/nameload

В этом представлении вы получите доступ к name следующим образом:

${name}

Который может быть использован в любом количестве тегов, например, тег <g:select>:

<g:select from="${name}" />
0 голосов
/ 17 ноября 2011

Вы должны иметь возможность доступа к значению текстового поля с помощью params.name.Если это не работает, у вас могут быть проблемы с вашим мнением.Теги g:textField и g:actionSubmit заключены в form или g:form?

...