Нужно понимать, как работают параметры Grails

У меня есть два вопроса на самом деле. Во-первых, мне интересно, как тег взаимодействует с другими тегами внутри него, когда вы нажимаете на контроллер. В частности, у меня есть тег снаружи, а другой - внутри тега. TextField снаружи тега формы находится в params один раз внутри контроллера, но textField внутри тега form НЕ находится в params. Почему это?

Мой второй вопрос касается работы с тегом. Я пытаюсь получить доступ к значениям в теге в моих параметрах, как только я попадаю в контроллер, а их просто нет. У меня есть право рядом с, и это заканчивается в 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 присутствует в параметрах, а selectto - НЕ.

Заранее благодарю за любую помощь.

2 ответа

Решение

Вы должны думать о тегах, как о макросах - они упрощают процесс вывода HTML, но не имеют прямого действия в отношении того, что происходит в вашем контроллере после того, как страница совершила круговое путешествие через браузер. Поэтому вам нужно посмотреть на источник HTML в вашем браузере, чтобы увидеть, что происходит. На данный момент (для браузера) не имеет значения, был ли HTML написан от руки, сгенерирован Grails, Java или PHP, это просто HTML.

На стороне контроллера все, что он видит, это стандартный HTTP-запрос. Поэтому вам нужно посмотреть параметры запроса, которые отправляет браузер.

Итак, для вашего второго вопроса, посмотрите на источник HTML в браузере, чтобы понять, почему он не отправляет selectto пары. Может быть, вы не выбрали один / некоторые из <option>s перед заполнением формы, так как только значения параметров с selected="selected" получить от браузера?

Сделать вид источника или использовать Firefox, чтобы увидеть, какой тип HTML на самом деле создается. Убедитесь, что у вас нет вложенных тегов или входов за пределами вашего тега. Вы также можете использовать аддон Httpfox, чтобы точно увидеть, что браузер отправляет на сервер.

Другие вопросы по тегам