Prezados membros,
Preciso que o evento de onClick de alguns elementos das páginas gsp abasteçam alguns dois atributos de session, mas não sei como fazê-lo. Preciso deste help de vocês!
Vejam só:
Considere o atributo menu001 (criado por mim).: session.menu001
Criei a seguinte função javaScript - setMenu00x com dois argumentos, a saber p1 e p2:
<script type="text/javascript">
function setMenu00x(p1, p2) {
if (p1 != null) {
${session.setAttribute(p1, p2)}
}
}
</script>
Neste caso, preciso passar os argumentos p1 e p2 para a função session.setAttribute ==> session.setAttribute (p1, p2)
Exemplo de código onde chamo o evento onClick:
<li class="">
<a href="#" class="dropdown-toggle" onclick="setMenu00x('menu001', 'Pessoas')" >
<i class="menu-icon fa fa-group"></i>
<span class="menu-text"> Pessoas </span>
<b class="arrow fa fa-angle-down"></b>
</a>?
Mensagem de erro recebida:
setAttribute: name parameter cannot be nullA título de teste, se substituirmos a funçã javaScrpt por:
?<script type="text/javascript">
function setMenu00x(p1, p2) {
if (p1 != null) {
${session.setAttribute('menu001', 'Pessoa')}
}
}
</script>
Tudo ocorre perfeitamente. Parece estar havendo alguma incompatibilidade entre os argumentos do JavaScript e os parâmetros do método Groovy ===> setMenu00x(p1, p2) X ${session.setAttribute(p1, p2)}
Tentei substituir a evocação do código Groovy por uma string e utilizar o JavaScript exec, mas embora não tenha dado erro nada aconteceu...
<script type="text/javascript">
function setMenu00x(p1, p2) {
if (p1 != null) {
var str1 = '"\$'
var str2 = "{session.setAttribute('"
var str3 = p1
var str4 = "','"
var str5 = p2
var str6= "'"
var str7 = ')}"'
var lsExp = str1.concat(str2, str3, str4, str5, str6, str7)
exec (lsExp)
}
}
</script>
O valor de lsExp, recuperado por uma função alert é:
"\${session.setAttribute('menu001', 'Pessoa')"Se eu fizer direto exec ("\${session.setAttribute('menu001', 'Pessoa')}")
Dá tudo certo...
Ou seja, os atributos não são reconhecidos.
Obrigado!