Grails: получение объекта / модели из ответа AJAX - PullRequest
1 голос
/ 11 июля 2011

Я новичок в Grails и сейчас пытаюсь извлечь объекты / модель из контроллера в шаблон, используя AJAX. Я хочу сделать так, чтобы свойства sms были доступны для шаблона messageBox, но это всегда возвращало бы мне нулевое значение. Может ли кто-нибудь помочь мне с этим? Любой ответ будет оценен, вот мой текущий код.

На моем клиенте

    <g:form>
    <label for="id">Sms ID </label>
    <g:textField name="id" />
    <g:submitToRemote value="search" update="msgBox"
                  url="[controller:'sms', action:'send']"/>
 </g:form>
<g:render template="messageBox" model="${[sms:sms]}/>

Мой контроллер

SmsController{

def send = {
  def sms = new Sms(...)
  //assume properties have been set
  ...
  ...
  render(template: messageBox, model:[sms:sms])
 }
}

и мой _messageBox.gsp

<div id="msgBox">
    <span>Sms Property 1: ${sms?.property1}</span>
    <span>Sms Property 2: ${sms?.property2}</span>
    <span>Sms Property 3: ${sms?.property3}</span>
</div>

1 Ответ

2 голосов
/ 11 июля 2011

Кажется, здесь есть несколько логистических ошибок

Во-первых, вы, кажется, дважды пересылаете шаблон messageBox.В вашем клиентском gsp вы звоните ...

  <g:render template="messageBox" model="${[sms:sms]}/>

При загрузке страницы "sms" всегда будет нулевым, если вы не предоставили один при загрузке страницы.Тогда вы, кажется, снова вызываете его в своем контроллере ...

render(template: messageBox, model:[sms:sms])

Кроме того, я бы переместил div: 'msgBox' за пределы шаблона и в ваш клиент что-то вроде ...

  <g:form>
    <label for="id">Sms ID </label>
    <g:textField name="id" />
    <g:submitToRemote value="search" update="msgBox"
                  url="[controller:'sms', action:'send']"/>
 </g:form>
<div id="msgBox">Waiting for some AJAX!</div>

Наконец, убедитесь, что в вашем заголовке есть библиотека javascript, например, прототип или jquery.Я не уверен, что это решит ваши проблемы, но это будет хорошим началом.Дайте мне знать!

...