| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/11/2004 17:43:18
|
phstc
JavaGuru
Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline
|
Olá!
Pessoal,
Eu e um amigo estamos desenvolvendo uma taglib,
pensamos em fazer semelhante a "convenção" do struts,
onde passamos para a taglib o nome do objeto e por reflection ela invoca o metódo.
Exemplo:
Struts
Nossa tag
No caso do Struts, ele vai procurar,
um metódo getter para o "atributo", segundo a convenção Java,
portanto: Classe.getAtributo()
Fui fazer isso, mas por reflection a única maneira que achei,
foi pegar a primeira letra da property fazer um upper nela e concatenar:
"get" + UPPER(a) + "tributo" /*pseudo código*/
É isso mesmo???
Grato,
Pablo
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/11/2004 18:11:09
|
maxguzenski
Virtual Machine Man
![[Avatar]](/images/avatar/d4c2e4a3297fe25a71d030b67eb83bfc.jpg)
Membro desde: 07/03/2003 11:47:42
Mensagens: 549
Localização: Porto Alegre
Offline
|
caram tenho 99% de certeza q essa é a maneira correta...
mas como o struts é openSource nao custa nada olhar o codigo deles ne ?
|
Maximiliano Ferreira Guzenski
Sun Certified Java Programmer 1.4
Sun Certified Web Component Developer 1.4
http://www.guzenski.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2004 09:03:00
|
kuchma
Moderador
![[Avatar]](/images/avatar/85422afb467e9456013a2a51d4dff702.jpg)
Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline
|
phstc wrote:Fui fazer isso, mas por reflection a única maneira que achei,
foi pegar a primeira letra da property fazer um upper nela e concatenar:
"get" + UPPER(a) + "tributo" /*pseudo código*/
Quando precisei fazer, fiz dessa forma tambem...
Lembre-se de que metodos que retorna booleanos podem ter o getter no formato "isAtributo". Tendo isso em mente acabei mudando o esquema que estava fazendo na epoca... ao inves de passar o atributo e eu tentar pegar o getter, coloquei para ser passado diretamente o nome do metodo. Para o usuario nao muda muito e eh mais pratico, pois ele pode dar o nome que ele quiser para o metodo.
Se voce tem um ambiente controlado e pode garantir que nao ocorrerao conflitos de seguranca com o Security Manager, considere utilizar diretamente os atributos, sem passar pelo getter. Eh um negocio bacana que da pra fazer com reflection.
Marcio Kuchma
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2004 12:00:47
|
phstc
JavaGuru
Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline
|
maxguzenski wrote:caram tenho 99% de certeza q essa é a maneira correta...
mas como o struts é openSource nao custa nada olhar o codigo deles ne ?
Peguei os fontes do struts, não achei nada de concatenção, porém não entedi como eles, vou demais para mim
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2004 12:03:19
|
phstc
JavaGuru
Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline
|
kuchma wrote:
phstc wrote:Fui fazer isso, mas por reflection a única maneira que achei,
foi pegar a primeira letra da property fazer um upper nela e concatenar:
"get" + UPPER(a) + "tributo" /*pseudo código*/
Quando precisei fazer, fiz dessa forma tambem...
Lembre-se de que metodos que retorna booleanos podem ter o getter no formato "isAtributo". Tendo isso em mente acabei mudando o esquema que estava fazendo na epoca... ao inves de passar o atributo e eu tentar pegar o getter, coloquei para ser passado diretamente o nome do metodo. Para o usuario nao muda muito e eh mais pratico, pois ele pode dar o nome que ele quiser para o metodo.
Se voce tem um ambiente controlado e pode garantir que nao ocorrerao conflitos de seguranca com o Security Manager, considere utilizar diretamente os atributos, sem passar pelo getter. Eh um negocio bacana que da pra fazer com reflection.
Marcio Kuchma
Nunca usei boolean com is, como ficaria? Sempre usei como qualquer getter e setter! Acho interessante passar pelo atributo, somente para manter o "padrão" adotado pelo struts!
Você diz usar atributos públicos???
[]'s,
Pablo
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2004 13:25:47
|
kuchma
Moderador
![[Avatar]](/images/avatar/85422afb467e9456013a2a51d4dff702.jpg)
Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline
|
phstc wrote:Você diz usar atributos públicos???
Primeiro vamos com esta.
Nao... voce pode usar atributos privados e ler seus conteudos via reflection, desde que o Security Manager nao barre isso (por default ele *nao* faz isso).
Veja:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/AccessibleObject.html#isAccessible()
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/AccessibleObject.html#setAccessible(boolean)
Por isso que eu disse que eh bacana.
phstc wrote:Acho interessante passar pelo atributo, somente para manter o "padrão" adotado pelo struts!
Eh, faz sentido. Principio da menor surpresa - ou algo assim.
phstc wrote:Nunca usei boolean com is, como ficaria? Sempre usei como qualquer getter e setter!
Veja o isAccessible()/setAccessible(boolean) acima.
Marcio Kuchma
This message was edited 1 time. Last update was at 19/11/2004 13:26:34
|
E tu, Belém-Efrata, pequena demais para figurar como grupo de milhares de Judá, de ti me sairá o que há de reinar em Israel, e cujas origens são desde os tempos antigos, desde os dias da eternidade. Mq 5:2, Miquéias, 750 AC aprox. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2005 15:49:41
|
andrejs
JavaTeenager
![[Avatar]](/images/avatar/c89e3ecd3f8ea0234e2c2.gif)
Membro desde: 29/08/2003 15:50:29
Mensagens: 168
Localização: Jundiaí
Offline
|
Kuchma.
VC c poderia me dar um exemplo de como utilizar esse isAccessible()/setAccessible(boolean) .. Eu vi a api mas não consegui usar !! :ó(
Obrigado.
|
Abraços
Obrigadoooo
André J S |
|
|
 |
|
|