AMIGOS
Estou com um problema ja faz algumas horas… é o seguinte:
Preciso que determinadas mensagens fiquem deslizando no topo da minha página, por isso vou usar a tag .
Estou fazendo a camada de visão com Freemarker… vamos ao que tenho hoje:
Camada de Visão: Freemarquer
.
.
.
<script type="text/javascript" src="<@i.staticURL "/scripts/prototype-1.6.0.2.js" />"></script>
<script type="text/javascript" src="<@i.staticURL "/scripts/applet.js" />"></script>
.
.
.
// se for perfil cliente, vou executar o trecho abaixo:
<#if userType == "CLIENT">
//BOM... AQUI EU FAÇO A CHAMADA DA FUNÇÃO QUE VOU MOSTRAR LOGO ABAIXO, PASSANDO O ID DO CLIENTE
// E A URL DA ACTION QUE DEVE EXECUTAR (TAMBEM VOU MOSTRAR ABAIXO ESSA ACTION)
<script>
ajaxUpdaterMessages('${client.id?c}','<@s.url namespace="/service/message" action="list"></@s.url>');
</script>
<li>
<marquee>
<table>
//PELO QUE ENTENDI, AQUI SERIA O LOCAL DE REFRESH DO AJAX
<tr id="tr_${client.id?c}" class="${class}">
<div id="div_${client.id?c}">
</div>
</tr>
</table>
</marquee>
</li>
</#if>
Não mencionei, mas preciso que essas mensagens fiquem deslizando de tempos em tempos… ok, sei que o conceito do Ajax.Updater é justamente esse (ou não ? :shock: )
Bom, enãto vou mostrar minha tentativa de implementar o Ajax.Updater:
meu arquivo.js:
.
.
.
function ajaxUpdaterMessages(elementId,url){
divId = "div_" + elementId;
trId = "tr_" + elementId;
new Ajax.Updater(divId, url);
//NAO SEI O QUE EH ISSO... E TA DANDO ERRO AQUI... NO MOMENTO ESTOU PESQUISANDO ISSO...
Effect.BlindDown(trId, { duration: 3.0 });
}
Minha action retorna uma lista de mensagens :
meu arquivo.java
public String list() {
messages = messageDAO.findAll();
return SUCCESS;
}
reparem que o struts chama mesmo esse metodo:
meu arquivo.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="messageService" namespace="/service/message" extends="service">
<action name="list" class="messageAction" method="list">
<result name="success" type="toString">
<param name="property">messages</param>
</result>
</action>
</package>
</struts>
Dessa forma quando eu carregar a pagina que contem a chamada para ajaxUpdaterMessages, essa pagina passa o id do cliente e a url da action para pegar as mensagens. Assim o ajax faz o refresh do div referenciado…
Meu problema são dois:
1° coloquei no braço (insert into) na tabela de mensagens uma mensagem, mas o ajax não atualizou … ou seja, continuou mostrando no topo da pagina as mensagens antigas…
2° esse problema não vale a pena relatar agora … o importante é ter um caminho nisso que eu to fazendo…
alguem pode me ajudar ?