Como acessar as variáveis do grails no javascript
14/08/2010 00:00
0
Olá, tenho o seguinte código no controller:

def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[
horarioInstanceList: Horario.list(params),
horarioInstanceTotal: Horario.count(),
date: new Date(2009,01,01)
]
}


No javascript, como atribuo a variavel "date" para uma outra qualquer?

Date minhaData = ????


Obrigado!
Tags: Grails


0
Carinha, se o código javascript ficar na .gsp, então dá pra acessar as variáveis normalmente vi EL, mas se ficar em .js separado não tem jeito.

Exemplo dentro de um .gsp:

<script type=&quot;text/javascript&quot; language=&quot;javascript&quot; >
var flashMessage = '${flash.message}';
alert(flashMessage);
</script>
14/08/2010 00:00


0
Não estou entendendo direito, acompanha comigo:

no controller tenho o código:
def list = {
params.max = Math.min(params.max ? params.int('max') &#58; 10, 100)
[
horarioInstanceList&#58; Horario.list(params),
horarioInstanceTotal&#58; Horario.count(),
date&#58; new Date(2009,01,01)
]
}


e na visao:
$('#datepicker').datepicker(&quot;setDate&quot;, &quot;${date}&quot; );


ele inicia o calendario em 01/05/2029

e se eu der um alert(&quot;${date.toString()}&quot;)

ele mostra: Mon Feb 01 00:00:00 BRST 3909

Estou esquecendo de algo ?
17/08/2010 00:00


0
Opa.

Usar a diretiva ${} para incluir variáveis da sua aplicação no gsp é uma opção problemática pelas seguintes razões:

* Só vai funcionar bem para tipos primitivos ou strings. Imagine um objeto qualquer sendo incluido assim na sua página: a representação difícilmente seria bacana. Quer ver um exemplo que pode até dar tragédia? Objetos do tipo Date, cuja representação pode variar de acordo com o local de execução ou configurações especifiadas da aplicação.

* Javascript sempre é executado do lado cliente, ou seja, no browser do seu usuário. Por definição - e recomendação - não é interessante que você fique mesclando o valor de suas variáveis dentro do seu código Javascript, pois pode acidentalmente corrompê-lo. Imagine por exemplo que você tenha uma variável do tipo String e quer incluir no seu script. Se houver um caractere de àspas ou um apóstrofo pode mandar seu script pro beleléu

* A variável que você está incluindo no seu código Javascript pode ficar desatualizada rápido. Nestas situações, seu cliente pode usar informação desatualizada.

Resumindo: não é uma boa.

Uma alternativa mais interessante é você usar ajax mesmo. Use uma biblioteca como jQuery que facilita a sua vida e, em seguida, crie actions em seus controladores que te retornem o valor que você deseja. Ai sua vida fica melhor, porque é possível, por exemplo, que o seu controlador te retorne um objeto complexo renderizado como JSON ou XML. Como JSON é melhor ainda, porque seu código Javascript nem vai precisar parsear o XML, vai tratar o resultado como se fosse um objeto js normal.

Como via de regra, faça o seguinte: imagine seu código Javascript SEMPRE como algo independente do que é executado no seu servidor. Veja-o como um consumidor dos dados fornecidos pelo servidor, nunca como algo criado por ele, como estava exposto na primeira alternativa.


0
Bom, como estou vindo de programação cliente servidor, delphi e afins, está um pouco difícil para pegar alguns conceitos. Talvez algum exemplo prático me seria bom.

Veja bem, tenho uma agenda de compromissos (Agenda) e preciso de uma tela onde eu possa escolher o dia (já vem por padrão a data atual) e ele me lista os compromissos desse dia.

Pelo que entendi até agora, tenho de colocar um componente de data dentro de um form, para poder gerar um form post e daí então, cair numa action de um controller para selecionar os registros e rendirecionar para a visão (que na teoria é a mesma que eu já estava antes).

É isso, tem algo a mais ?

Valeu!
19/08/2010 00:00


0
Sim, é basicamente isto. Mas aonde o Javascript entra na história ai?


0
Baseado nesta conversa nossa, escrevi o seguinte código:

No Controller:
def list = {


params.max = Math.min(params.max ? params.int('max') &#58; 10, 100)

[
horarioInstanceList&#58; Horario.findAllByData(params.dataInicial, params),
horarioInstanceTotal&#58; Horario.count(),
dataInicial&#58; params.dataInicial
]
}


Na view:

<g&#58;form method=&quot;post&quot; action=&quot;list&quot; >
<richui&#58;dateChooser name=&quot;dataInicial&quot; format=&quot;dd.MM.yyyy&quot; value=&quot;${dataInicial}&quot; />

<div class=&quot;buttons&quot;>
<span class=&quot;button&quot;><g&#58;actionSubmit class=&quot;save&quot; action=&quot;list&quot; value=&quot;${message(code&#58; 'default.button.update.label', default&#58; 'Update')}&quot; /></span>


</div>
</g&#58;form>

...listagem aqui



Neste caso o javascript nem entrou mesmo. É que inicialmente estava querendo usar o jqueryUI para mostrar o calendário, dá eu não sabia como passar-lhe valores.

Estou no caminho certo?
20/08/2010 00:00



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