Display tag - alterar tr

Eu estou usando display tag para fazer a paginação de listas, mas preciso colocar um onMouseOver e um onMouseOut na tag TR que ele mesmo gera.

Alguem sabe como fazer isso ?

Herrera

Amigo,

Você poder criar dois métodos na sua classe 'decorator':
public String startRow() {

  StringBuffer link = new StringBuffer("<span onclick=\"");
	
  link.append("JavaScript:alert('teste');\"");
			
  return link.toString();	 	
}

public String finishRow() {
  return "</span>";
}
	

Amigo, de uma olhada em http://displaytag.sourceforge.net/11/ existem outros métodos também que podem ser criados e que podem te ajudar…

v1c70r_f

vou pesquisar mais a respeito do decorator. Mas convenhamos, isso é um exemplo que uma coisa simples pode começar a ficar complicada. só para colocar um nMouseOver() e um onMouseOut () na TR que ele gera vou ter que criar uma classe decorator ? 

só uso mesmo o displaytag para fazer a paginação de listagens. Será que existe uma outra opção ao inves do displayTag ?

Herrera

amigo, confesso que desconheço…

mas acredito que mesmo com a classe decorator a implementação fica mais fácil do que você fazer a paginação tudo na mão neh…

o legal de utilizar a classe decorator é que você pode também ao invés de simplesmente exibir uma informação texto na tela, você pode trocar por uma imagem, ou então formatar um atributo date, fazer algum tipo de condição, ou até mesmo colocar uma função javascript diferente para cada coluna da sua tabela…

vc tem algum exemplo, no site a documentação é bem escassa…

Herrera


import java.util.ArrayList;

import org.displaytag.decorator.TableDecorator;

public class TesteDecorator extends TableDecorator {


	public TesteDecorator () {
		super();
	}


	public String getNome() {
		TesteVO vo =
			(TesteVO) this.getCurrentRowObject();

		return vo.getNome();
	}


	public String getEndereco() {
		TesteVO vo =
			(TesteVO ) this.getCurrentRowObject();
		return vo.getLogradouro().getDescricao + ", " + vo.getLogradouro().getNumero();
	}

               // substituindo por uma imagem
	public String getStatus() {
		TesteVO vo =
			(TesteVO ) this.getCurrentRowObject();
		String value = vo.getStatus();

		String result = "";

		if (value.equals("INATIVO")) {
			result = "<img src='../images/bt_checknok.gif' border='0'>";
		} else {
			result = "<img src='../images/bt_checkok.jpg' border='0'>";
		}

		return result;
	}

              // cria um link
	public String startRow() {
		StringBuffer link = new StringBuffer("<span onclick=\"");

		link.append("JavaScript:window.location='visualizartestevo.do?indiceLista=");
		link.append(this.getIndex()).append("';\">");

		return link.toString();
	}

                // aqui eu pego o indice do objeto na lista que o displaytag recebeu, nao o indice na tabela que sera apresentada na tela
	private String getIndex(){
		ArrayList lista = (ArrayList) this.getDecoratedObject();
		return ""+lista.indexOf(this.getCurrentRowObject());
	}

	public String finishRow() {
		return "</span>";
	}
}

Espero que ajude um pouco…

Abraço.

e aí v1c70r_f… blz?

cara, como eu faço para usar esse decorator que você criou?
preciso usar a parte da geração de link usando o índice do item na lista, e pelo que me parece, o seu exemplo pode servir.

mas aí surgiu essa dúvida… onde vai esse decorator dentro das tag’s do displaytag?

valeu

blz carinha!

pra usa o decorator é só colocar a classe na propriedade decorator do display:table

Ex.

<display:table pagesize="5" name="requestScope.resultadoFiltro" 
			class="tabela_dados" id="searchResultTO" 
			decorator="com.suaaplicacao.web.decorator.TesteDecorator">

Desculpa a demora na resposta carinha…
Abraçow.

nem esquenta…

já testei aqui e funcionou…

valeu mesmo

abraços