VRaptor3 vs DisplayTag

18 respostas
J

E o seguinte quero saber se com displaytag TableDecorator e DisplayColumnDecorator tem como por exemplo de pegar a propriedade de display:column por exemplo o href ?

18 Respostas

juniorsatanas

O que você quer fazer amigão ? e o que você tem feito ?

jr

J

juniorsatanas:
O que você quer fazer amigão ? e o que você tem feito ?

jr

E o seguinte estou querendo por exemplo pegar as propriedades da display:column por exemplo paramId, value, href, paramProperty para deixar customizada conforme minhas necessidades montando assim links de edição, exclusão e inserção automaticamente ou seja deixar o displaytag mais inteligente ja usei jqGrid, ExtJS mas fica um parafernalia de JS e codigos javascript + ajax acho muita coisa para fazer somente operações basica.
Se voce usa alguma especie de Grid qual foi sua melhor experiencia com este tipo de componente e que voce usa hoje.

Obrigado !!!
JVDS

Lagaffe

Para incluir links é só fazer como em html:

<display:column> <a href="<c:url value="/usuario/listaPerfis/${usuario.id}"/>"> perfis </a> </display:column>

J

Lagaffe:
Para incluir links é só fazer como em html:

<display:column> <a href="<c:url value="/usuario/listaPerfis/${usuario.id}"/>"> perfis </a> </display:column>

Não e isso que quero fazer e sim gerar links automaticos pelo objeto java.

M

Então, você pode extender TableDecorator e criar um link dinamicamente recuperando o Id do objeto corrente…

como por exemplo

public class VendaDecorator extends TableDecorator {

    public String getEdita() {
        Venda venda = (Venda)getCurrentRowObject();
        StringBuilder cmd = new StringBuilder("<a href=\"/venda/");
        cmd.append(venda.getId());
        cmd.append("\">editar</a>");
        return cmd.toString();
    }

}

e na jsp

<display:column property="edita" title="editar"/>
P

O DisplayTag consegue fazer paginação no servidor ?

Lucas_Cavalcanti

se eu não me engano, sim. Vc consegue passar uma url pra ele, e ele passa os parâmetros pra paginação

Nykolas_Lima

Consegue fazer paginação no servidor sim, você tem que implementar umas interfaces dele.

Com VRaptor fica bem fácil de fazer devido a injeção de dependência bem fácil…

Tenho um exemplo em casa, usando VRaptor e também fiz uma modificação do DisplayTag para ele gerar o href com id de cada linha…a noite se eu entrar posto aqui ou no git…

L

Oi Nykolas,

Já enviou essa tua aplicação para o github?

juniorsatanas

Estou curioso tbm !

Nykolas_Lima

Não deu tempo de por durante a semana, agora com o final de semana eu coloco e posto aqui…

juniorsatanas

Nykolas Lima Boa tarde !

Vai ser uma grande contribuição para os usuários !

abraço.

J

Estou fazendo algumas customizacao aqui agora estou recebendo esta exception.

displaytag Unable to find setter method for attribute: class

Se eu tirar o class do display:table ai para de dar erro alguem saberia de como eu contornar este problema.

Lucas_Cavalcanti

pq vc coloca o class no display-table?

J

Olha lucas devido eu estar fazendo algumas customizacao no displaytag via jQuery vou mostrar o que estou fazendo um pouco que descobri usando a documentacao do displaytag.

So para voce entender o que estou fazendo aqui com a displaytag para deixar um pouco mais inteligente, todo o lugar que uso a displaytag caso queira que seja editavel eu defino a coluna action com propriedade value com os valores da chave primary key entao esta coluna gera automaticamente os links de edicao caso queira um botao novo insiro a propriedade btnNew com os valores caso tenha alguma dependencia por exemplo Itens da Nota Fiscal precisa do id da nota fiscal para amarrar uma tabela com a outra entao nesta tela tenho formulario da Nota Fiscal e logo abaixo a displaytag com os itens.

<display:table class="displaytag" id="caditensnota" name="${caditensnotalist}" export="true" defaultsort="1" requestURI="/caditensnota/lista" decorator="br.com.jvds.ria.displaytag.ModelDecorator">
				<display:column property="id.idnota"/>
				<display:column property="id.iditem"/>
				<display:column property="id.descricao"/>
   				<display:column property="action" headerClass="displaytagAction" title="action" value="${caditensnota.id.idnota}/${caditensnota.id.iditem}" btnNew="caditensnota?caditensnota.id.idnota=${cadnota.id}"/>
			</display:table>

OBS:
Registrar taglib displaytag por padrao

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>

customizado por mim fiz assim para adicionar a propriedade btnNew

<%@ taglib uri="/WEB-INF/displaytag-jvds.tld" prefix="display"%>

Se eu nao usar o class funciona beleza so que se colocar class ai nao rola.
Pelo o que entendi devido qualquer classe por padrao ja tem o setter setClass(Class value) como estou customizando tenho um setClass(String value) acho que e ai que esta a merda.

Obrigado !!!
JVDS

Lucas_Cavalcanti

pois eh, essa é a desvantagem de usar taglibs, vc acaba não conseguindo customizar o suficiente o que vc precisa…

dá uma olhada no html gerado, e vê se a table tem id, daí vc pode usar para estilizar com css.

nenhuma classe tem setClass(), mas todas tem getClass() esse é o problema. vc talvez tenha que chamar a propriedade pra outro nome, tipo htmlClass ou cssClass

J

Lucas Cavalcanti:
pois eh, essa é a desvantagem de usar taglibs, vc acaba não conseguindo customizar o suficiente o que vc precisa…

dá uma olhada no html gerado, e vê se a table tem id, daí vc pode usar para estilizar com css.

nenhuma classe tem setClass(), mas todas tem getClass() esse é o problema. vc talvez tenha que chamar a propriedade pra outro nome, tipo htmlClass ou cssClass

Desculpe e isto mesmo.
Valeu se eu conseguir evoluir aqui em algumas coisas eu posto os resultados ai.

Obrigado !!!
JVDS

Edifran

Nykolas Lima

Boa tarde, desculpa recuperar este topico antigo, mas voce parece ter a solução para montar o link com o id do registro na linha.
Eu abri um post recente http://www.guj.com.br/java/277755-link-displaytag-nao-esta-funcionando com uma dúvida assim, mas se tiver como voce me ajudar por aqui valeu.

Abraco

Criado 23 de fevereiro de 2011
Ultima resposta 14 de jul. de 2012
Respostas 18
Participantes 9