[DUVIDA] - [DISPLAYTAG] - Pegar os elementos

Bom dia galera, preciso de ajuda com o seguinte:

Tenho uma JSP que, através de uma lista, monta na tela uma tabela através da lib(displaytag).

TABELA:

<display:table name="slas" class="table tables-detalhes" pagesize="6" requestURI="/filtraEmissor.do" htmlId="slas" decorator="meu-decorator">
    <display:setProperty name="basic.msg.empty_list" value="<div style='text-align: center'>Selecione um emissor para visualizar os Sla's ativos</div>" />
    <display:column property="codFicha" title="ficha" class="codFicha" />
    <display:column property="nomeAditivo" title="aditivo" class="nomeAditivo" />
    <display:column property="nomePrestador" title="prestador" class="nomePrestador" />
    <display:column property="inicioVigenciaSla" format="{0,date,dd/MM/yyyy}" title="data status" class="inicioVigenciaSla" />
    <display:column property="inicioVigenciaFicha" format="{0,date,dd/MM/yyyy}" title="data entrada" class="inicioVigenciaFicha" />
    <display:column property="acao" title=""  />
     <!-- CAMPOS HIDDEN PARA POPULAR MODAL  -->
    <display:column property="codSla" class="hidden" headerClass="hidden" />
    <display:column property="codSequencialSla" class="hidden" headerClass="hidden" />
    <display:column property="codSituacaoSla" class="hidden" headerClass="hidden" />
    <display:column property="nomeEmissor" class="hidden" headerClass="hidden" />
</display:table>

DTO cujo atributos são usados em property da displaytable:

public class SlaSituacaoDTO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2947689414850104008L;
	
	//SIT_ADITV_NEGOC_CONTR.CUSUAR_RESP_ADITV
	private String nomeEmissor;
	
	//SIT_ADITV_NEGOC_CONTR.RJUSTF_TROCA_RESP
	private String justificativaTrocaEmissor;
	
	// TPO_ADITV_CONTR.RTPO_ADITV_CONTR
	private String nomeAditivo;
	
	// REFRD.IREFRD
	private String nomePrestador;
	
	// NEGOC_CONTR.DRECEB_MTRIZ
	private Date inicioVigenciaFicha;
	
	
	// CAMPOS PARA INSERT NA SITUACAO SLA
	
	//SIT_ADITV_NEGOC_CONTR.CTPO_ADITV_CONTR
	private Double codSla;
	
	// NEGOC_CONTR.CNEGOC_CONTR
	private String codFicha;
	
	//SIT_ADITV_NEGOC_CONTR.SEQ_NEGOC_ADITV_CONTR
	private Double codSequencialSla;
	
	//SIT_ADITV_NEGOC_CONTR.CSIT_ACOMP_NEGOC_CONTR
	private Double CodSituacaoSla;
	
	// SIT_ADITV_NEGOC_CONTR.DINIC_VGCIA_SIT_ADITV
	private Date inicioVigenciaSla;
	
	
	public SlaSituacaoDTO(){
		
	}
		
	public String getCodFicha() {
		return codFicha;
	}

	public void setCodFicha(String codFicha) {
		this.codFicha = codFicha;
	}

	public String getNomeAditivo() {
		return nomeAditivo;
	}

	public void setNomeAditivo(String nomeAditivo) {
		this.nomeAditivo = nomeAditivo;
	}

	public String getNomePrestador() {
		return nomePrestador;
	}

	public void setNomePrestador(String prestador) {
		this.nomePrestador = prestador;
	}

	public Date getInicioVigenciaSla() {
		return inicioVigenciaSla;
	}

	public void setInicioVigenciaSla(Date inicioVigenciaSla) {
		this.inicioVigenciaSla = inicioVigenciaSla;
	}

	public Date getInicioVigenciaFicha() {
		return inicioVigenciaFicha;
	}

	public void setInicioVigenciaFicha(Date inicioVigenciaFicha) {
		this.inicioVigenciaFicha = inicioVigenciaFicha;
	}

	public Double getCodSla() {
		return codSla;
	}

	public void setCodSla(Double codSla) {
		this.codSla = codSla;
	}

	public Double getCodSequencialSla() {
		return codSequencialSla;
	}

	public void setCodSequencialSla(Double codSequencialSla) {
		this.codSequencialSla = codSequencialSla;
	}

	public Double getCodSituacaoSla() {
		return CodSituacaoSla;
	}

	public void setCodSituacaoSla(Double codSituacaoSla) {
		CodSituacaoSla = codSituacaoSla;
	}

	public String getNomeEmissor() {
		return nomeEmissor;
	}

	public void setNomeEmissor(String nomeEmissor) {
		this.nomeEmissor = nomeEmissor;
	}

	public String getJustificativaTrocaEmissor() {
		return justificativaTrocaEmissor;
	}

	public void setJustificativaTrocaEmissor(String justificativaTrocaEmissor) {
		this.justificativaTrocaEmissor = justificativaTrocaEmissor;
	}
}

A coluna “acao” da displaytable tem um botão que chama uma função .js que serve para abrir um modal onde preciso acessar todos esses valores da tabela, por dois motivos:

  • Preciso mostrar no modal alguma dessas informações em campos input.
  • Quando eu submeter o modal, as informações do form do modal precisam ir junto com as informações hidden da displaytable
  • Existe uma forma de ao clicar no botão, ele levar o DTO daquela “linha” direto para o meu modal? Como faço pra referenciar um objeto da minha lista usando o displaytag?

    Obs.: Se eu estiver pensando errado e alguém tiver uma alternativa melhor, fico muito agradecido!

    O modal não passa de um trecho de código que está na sua JSP, nativamente ou através de um import. Independente disso, você pode deixar o tal trecho de código pronto, como se ele fosse ser exibido como parte da página em questão. Ao clicar no botão, você apenas mostra o modal, com todos os dados necessários já preenchidos.

    De onde vem o displaytag? Desconheço esse cara.

    1 curtida

    De onde vem o displaytag? Desconheço esse cara.

    Uso básico DisplayTag

    Pelo que entendi da documentação, ele faz uma espécie de forEach implícito e preenche a tabela.

    Ao clicar no botão, você apenas mostra o modal, com todos os dados necessários já preenchidos.

    Agradeço pela resposta, mas ainda não entendi como vou fazer referência a esses valores, se o forEach não fui eu quem montei, foi a biblioteca.

    Como vou conseguir acessar, por exemplo, o codFicha da linha que eu clicar? Consegue me dar uma ajuda com isso? Não faço ideia de como resolver…

    Muito provavelmente você vai precisar estudar isso

    1 curtida

    Dei uma olhada na documentação e não consegui entender :frowning:

    Para resolver, coloquei no clique do botão a chamada de uma função passando this como parâmetro.

    Dentro da função a partir do this, utilizei o closest para acessar cada coluna da linha e ir atribuindo seus valores a variáveis e aparentemente funcionou bem.

    <button onclick="funcaoExemplo(this)">Exemplo</button>
    funcaoExemplo(button){
    
    atalho = $(botaoThis).closest("tr");
    
    $("#variavelExemplo1").val(registro.find("td:nth-child(1)").text());
    $("#variavelExemplo2").val(registro.find("td:nth-child(2)").text());
    $("#variavelExemplo2").val(registro.find("td:nth-child(3)").text());
    }

    Não achei uma solução muito boa, porém, está funcionando :tipping_hand_man:t4: