Problema com TagLib e Javascript
27/11/2009 00:00
0
olá galera!

para começar, quando inicio a aplicação no tomcat, já na tela inicial da esse erro:
Cannot create a session after the response has been committed


a causa disso é de ter no meu main.gsp um Javascript do menu e um TagLib de login,
se eu tiro o Javascript e deixo o TagLib o erro não acontece, ou vice e versa..

segue o código do main.gsp (não vou colocar tudo porque não há necessidade, abaixo disso só segue o código que monta o menu... <li> <ul> e tal):
<html>
<head>
<title><g&#58;layoutTitle default=&quot;Universidade&quot; /></title>
<link rel=&quot;stylesheet&quot; href=&quot;${resource(dir&#58;'css',file&#58;'main.css')}&quot; />
<calendar&#58;resources lang=&quot;br&quot; theme=&quot;tiger&quot;/>
<link rel=&quot;stylesheet&quot; href=&quot;${resource(dir&#58;'css',file&#58;'menu.css')}&quot; />
<link rel=&quot;shortcut icon&quot; href=&quot;${resource(dir&#58;'images',file&#58;'favicon.ico')}&quot; type=&quot;image/x-icon&quot; />

<g&#58;layoutHead />
<script language=&quot;javascript&quot;>
function IEHoverPseudo() {

var navItems = document.getElementById(&quot;primary-nav&quot;).getElementsByTagName(&quot;li&quot;);

for (var i=0; i<navItems.length; i++) {
if(navItems[i].className == &quot;menuparent&quot;) {
navItems[i].onmouseover=function() { this.className += &quot;over&quot;; }
navItems[i].onmouseout=function() { this.className = &quot;menuparent&quot;; }
}
}

}
window.onload = IEHoverPseudo;
</script>

</head>
<body>

<div id=&quot;top&quot;>
<div class=&quot;logo&quot;><g&#58;link url=&quot;/prograd/sisacad&quot;><img src=&quot;${resource(dir&#58;'images',file&#58;'uepg.jpg')}&quot; alt=&quot;Universidade&quot; border=&quot;0&quot; width=&quot;100%&quot; /></g&#58;link></div>

<div id=&quot;loginHeader&quot;>
<g&#58;loginControl />
</div>
<br>

<g&#58;layoutBody />

<div id=&quot;esquerda&quot;>


O LoginTagLib:
class LoginTagLib {
def loginControl = {
if(session.user){
out << &quot;${session.user_e} &quot;
out << &quot;&quot;&quot;[${link(action&#58;&quot;logout&quot;, controller&#58;&quot;login&quot;){&quot;Sair&quot;}}]&quot;&quot;&quot;
} else {
out << &quot;&quot;&quot;[${link(action&#58;&quot;index&quot;, controller&#58;&quot;login&quot;){&quot;Conectar&quot;}}]&quot;&quot;&quot;
}
}
}


pesquisando por aí, descobri que o grails &quot;cria&quot; a session quando é feito algo assim
if(session.user)

não entendi direito mas é algo assim, o grails inicializa a session para verificar se ela existe, confuso...

O erro que acontece é exatamente quando chega no:
<div id=&quot;loginHeader&quot;>
<g&#58;loginControl />
</div>


quero saber com vocês, se tem alguma outra forma de definir esse javascript e contornar esse problema.

obs: preciso desse javascript para o meu menu funcionar no IE
obs 2: esse erro não acontece quando eu rodo a aplicação pelo grails (jetty)
obs 3: se quiserem ver o erro aqui esta o link https&#58;//sistemas.uepg.br/sisacad/
obs 4: se você tentar ir para o controller academicos (https&#58;//sistemas.uepg.br/sisacad/academicos) o erro desaparece e a aplicação funciona normal a partir disso... até que o browser seja fechado, ou seja, é problema com session mesmo, cookies sei la

Me desculpem o tamanho do post.. <!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Razz" /><!-- s:P -->
valeu!
Tags: Grails


0
é... pelo jeito vou ter que trocar de menu <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->

só pra acrescentar, uma coisa que a gente percebeu é que o codigo do nosso menu tava executando algo antes de executar o codigo das tagLib que criam as session

coloquei o código da tagLib

<div id=&quot;loginHeader&quot;>
<g&#58;loginControl />
</div>

por primeiro, antes da tag <html> e o erro não ocorreu...
30/11/2009 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