olá. me surgiu uma dúvida básica
nos sistemas há muitos campos que se repetem em vários lugares, por exemplo um campo placa (placa de carro).
ocorre que no projeto em que trabalho há vários campos placa por todo o sistema e geralmente não são padronizados: por exemplo uns tem javascript para que o campo só aceite 3 letras seguidas de 4 números, outros campos aceitam tudo, apenas limitam a quantidade de caracteres e outros nem limitam a quantidade.
sei que basta fazer a equipe seguir um padrão para que isso se resolva, mas pensei se seria possível criar uma tag, extendendo a tag text do struts. Essa tag poderia se chamar placa e seria utilizada sempre no lugar de textfield. o mesmo poderia ser feito para vários campos no sistema.
isso é possível? é aconselhável? obrigado.
Devo extender as tags struts?
3 Respostas
Estender no sentido de usar o “extends” fica um pouco difícil, pois teria que interferir na renderização do componente.
Um exemplo: transformar em
Quer dizer, não dá para estender a classe da Tag e depois fazer algo do tipo:
doTag() {
super.doTag();
// Faz mais alguma coisa
}
Quando o código da classe mãe executou a tag já foi renderizada e fechada, não há mais o que fazer.
:idea: Porém nada impede que você pegue o código dos componentes do Struts e crie o seu baseado neles :!:
é você tem toda razão, mas quando falei em extender foi no sentido de extender o comportamento mesmo, copiando o que a tag original faz e incluindo o que eu quero que ela faça. isso dá pra fazer. Minha dúvida maior é se é aconselhável fazer isso em para vários campos da aplicação, pois eu nunca vi isso em nenhum dos sistemas em que trabalhei, mas achei que seria interessante.
da maneira que eu falei o sistema terias tags personalizadas, tipo: minhasTags:cpf minhasTags:data minhasTags:placa etc. Você vê algum problema em se fazer isso?
obrigado pela resposta cara!
Na minha opinião o único inconveniente é que daria um trabalho bem grande para duplicar as tags e inserir em cada uma o comportamento desejado.
Uma maneira mais prática seria incluir um arquivo de javascript com o comportamento padrão de cada tipo de campo, onde estaria a validação, formatação, etc.
Aí é só usar o componente padrão mesmo, tipo:
<html:text onkeydown="formataCpf(this, event)" ...
<html:text onkeydown="formataData(this, event)" ...
E as função javascript fariam todo o tratamento, como permitir apenas teclas numéricas, colocar os pontos e barras, etc.
Se precisar de alguma característica visual pode usar a mesma idéia, só que apontando uma classe CSS.