Ajax com error 404
21/09/2009 00:00
0
Olá, estou usando o formRemote para obter um list, mas estou tendo problemas.
Tenho seguinte erro:

<html>
<head>
<meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;/>
<title>Error 404 /WEB-INF/grails-app/views/vendor/search.jsp</title>
</head>
<body><h2>HTTP ERROR&#58; 404</h2><pre>/WEB-INF/grails-app/views/vendor/search.jsp</pre>
<p>RequestURI=/cvhweb/WEB-INF/grails-app/views/vendor/search.jsp</p><p><i><small><a href=&quot;http&#58;//jetty.mortbay.org/&quot;>Powered by Jetty&#58;//</a></small></i></p><br/>


VendorController:

class VendorController {

def index = {
render (template&#58; &quot;search&quot;)
}

def search = {
def vendorList&#58; Vendor.list(params)
return [vendor&#58;vendorList])
}
}


_search.gsp

<%@ page contentType=&quot;text/html;charset=UTF-8&quot; %>
<meta name=&quot;layout&quot; content=&quot;main&quot; />
<div class=&quot;form&quot;>
<g&#58;formRemote name=&quot;frmSearchVendor&quot;
url=&quot;[controller&#58;'vendor', action&#58;'search']&quot;>

<label for=&quot;txtLike&quot;>Pesquisa&#58;</label>
<input type=&quot;text&quot; name=&quot;vendorSiteCode&quot; id=&quot;vendorSiteCode&quot;/>
<input type=&quot;submit&quot; value=&quot;Buscar&quot; id=&quot;btnBuscar&quot;>

<!-- Tabela de resultado -->
<table id=&quot;tblResult&quot; style=&quot;width&#58;300px;&quot;>
<thead>
<tr>
<td></td>
<td>Código</td>
<td>Nome</td>
</tr>
</thead>
<tbody>
<g&#58;each var=&quot;v&quot; in=&quot;${vendorList?}&quot;>
<tr>
<td></td>
<td>${v.vendorSiteCode}</td>
<td>${v.vendorName}</td>
</tr>
</g&#58;each>
</tbody>
</table>

</g&#58;formRemote>
</div>
Tags: Grails


0
Fácil de resolver. no seu controlador, modifique o seu controlador para que fique tal como no snippet abaixo:


def search = {
def vendorList&#58; Vendor.list(params)
render(template&#58;'search', model&#58;[vendor&#58;vendorList])
}


O que estava acontecendo era o seguinte: como o seu controlador estava apenas retornando um model, o controlador do Grails por convenção procuraria por um arquivo chamado Search.gsp no diretório vendor.

Ao executar o método render passando o parametro template, você está especificando que o arquivo _search.gsp no diretório /grails-app/views/vendor seja renderizado.


0
Deu certo...
mas estava fazendo desse modo para um formulário de login...

até aparece alterado para welcomeMessage mas aparece ainda abaixo o formulário de login

<div id=&quot;loginForm&quot;>
<g&#58;if test=&quot;${session?.user}&quot;>
<g&#58;render template=&quot;/user/welcomeMessage&quot;></g&#58;render>
</g&#58;if>
<g&#58;else>
<g&#58;render template=&quot;/user/loginForm&quot;></g&#58;render>
</g&#58;else>
</div>

O que estou fazendo de errado?
21/09/2009 00:00


0
Na sua tag formRemote está faltando o atributo update.
Ele é que diz qual div deverá ser atualizada com o conteúdo retornado pelo controlador.

No caso, o valor deste atributo corresponde ao id da div (ou qualquer outra tag diferente de div) que você queira alterar.

Exemplo:


<g&#58;formRemote update=&quot;divQuente&quot; name=&quot;formularioQuente&quot; url=&quot;[action&#58;'executar', controller&#58;'controladorQuente']&quot;>
bla bla bla
</g&#58;formRemote>

<div id=&quot;divQuente&quot;>
Ouvi dizer que vou ser atualizada pelo ajax.
</div>



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto