Dúvias com uso de decorator

7 respostas
aquilante

Pessoal uma dúvida com displaytags:

So um trecho do meu jsp:

<display:table id="row" name="pontos" class="simple" decorator="br.com.checkrota.srv.util.IndexTableDecorator">
		<display:column title="FOCO" style="text-align: center;">
			<input type="radio" name="foco" class="radio" ${ (not empty legend) ? 'checked' : ''} value="${row.veiculo}" />
			<c:set var="legend" value="" />
		</display:column>
</display:table>

Essa é minha classe IndexTableDecorator:

public class IndexTableDecorator extends TableDecorator {
	
	/*
	 *  meus atributos da classe
	 */
 
	public String addRowClass() {
		try {
			String classe = "";

// Aqui ocorre o erro:
			String dataString = ((Map) getCurrentRowObject()).get("dataHoraTransmissao").toString();

			Date data = DateHelper.parseDate("yyyy-MM-dd HH:mm:ss", dataString);
			Date today = DateHelper.getToday();
			long elapsedTime = DateHelper.getElapsedTime(data, today);
			

        /*
	 *  Aqui o restante da classe
	 */
	}
}

O erro:

javax.servlet.ServletException: javax.servlet.jsp.JspException: br.com.checkrota.srv.model.HistoricoFindCar cannot be cast to java.util.Map

Se eu tirar o cast para Map da erro. Eu tenho que pegar essa data, mas n sei como. Alguém tem uma idéia?

:oops:

7 Respostas

aquilante

Algém pode me dizer o que faz o método getCurrentRowObject() e o método getDecoratedObject()?

Vlwss!!

:roll:

nandobgi

De uma olhada aqui

http://displaytag.sourceforge.net/11/displaytag/apidocs/index.html

Tem o que você precisa.

[ ]'s

nandobgi

Eu formato minhas datas no displayTag com o seguinte Decorator

public class FormataData implements DisplaytagColumnDecorator{
	
    private FastDateFormat dateFormat = FastDateFormat.getInstance("dd/MM/yyyy"); 

    public Object decorate(Object columnValue, PageContext pageContext, MediaTypeEnum media) throws DecoratorException
    {
    	Date date = (Date) columnValue;
        return this.dateFormat.format(date);
    }

}

Espero ter ajudado.

[ ]'s

aquilante

blz nandobgi, mas no meu caso, a parte de formatação ta beleza. As cores das linhas da tabela vão ser atualizadas de acordo com a vaiação de tempo. Esse tempo eu pego com:

String classe = "";
String dataString = ((Map) [b]getDecoratedObject()).get("dataHoraTransmissao").toString();[/b]
// N sei pq tem q ser feito esse cast para Map, se eu tirar da erro. 
Date data = DateHelper.parseDate("yyyy-MM-dd HH:mm:ss", dataString);
Date today = DateHelper.getToday();
long elapsedTime = DateHelper.getElapsedTime(data, today);

Depois eu so faço a regra de coloração da tabela, q ta funcionando legal. Como eu faço pra pegar essa data?

aquilante

aquilante:
blz nandobgi, mas no meu caso, a parte de formatação ta beleza. As cores das linhas da tabela vão ser atualizadas de acordo com a variação de tempo. Esse tempo eu pego com:

String classe = "";
String dataString = ((Map)getDecoratedObject()).get("dataHoraTransmissao").toString();
// N sei pq tem q ser feito esse cast para Map, se eu tirar da erro. 
// m pode ser so assim: String dataString = getDecoratedObject().get("dataHoraTransmissao").toString();
Date data = DateHelper.parseDate("yyyy-MM-dd HH:mm:ss", dataString);
Date today = DateHelper.getToday();
long elapsedTime = DateHelper.getElapsedTime(data, today);

Depois eu so faço a regra de coloração da tabela, q ta funcionando legal. Como eu faço pra pegar essa data?

aquilante

Eu fiz dessa forma:

String dataString = getCurrentRowObject().toString();

Me retorna algo como “185658” que acredito que seja uma instacia do objeto, pq esse método(getCurrentRowObject()) retorna um object. Eu vi na documentação e n entendi muito bem, alguém ja viu algo parecido q possa me ajudar?

:roll:

aquilante

Ninguém tem uma novidade?

Vi que o método getCurrentRowObject() pega a ultima linha corrente, ele me devolve um identificador, no meu caso, me retorna um objectID (historico_id). Qdo eu faço:

String dataString = getCurrentRowObject().get("dataHoraTransmissao").toString();

Eu pego o objeto dataHoraTransmissao que se encontra na mesma linha corrente. So q dessa forma n da certo, alguém já passou por isso e pode me ajudar?

Obrigado!!! :roll:

Criado 9 de abril de 2008
Ultima resposta 10 de abr. de 2008
Respostas 7
Participantes 2