Bem-vindos ao blog Preciso Estudar Sempre. Meu nome é João Paulo Maida e minha paixão é estudar.
O tema de hoje é voltado para desenvolvedores que já estão familiarizados com o framework Struts 2. Não explicarei aqui como funcionam as tags do Struts pois, não é esse o nosso objetivo. Caso você, amiguinho, não conheça nada desse framework, recomendo fortemente que você dê uma clicada aqui e veja essa listagem de tutoriais.
Tenho experiência de alguns anos com o framework Struts 2 e toda vez que preciso recuperar dados usando OGNL, me sinto um pouco inseguro e desconfortável mas, porque ? Tenho de admitir que sou muito fã de Expression Language (EL) + JSTL porque, com eles consigo trabalhar de forma límpida e rápida. A verdade era que a OGNL não descia pela minha garganta porque, achava muito complicado, existem várias formas de se fazer a mesma coisa. Eu nunca sabia quando usar o #, o %{expressão}, o @ ou o attr e isso ainda podia piorar porque, as vezes via em alguns exemplos, pessoas realizando combinações desses caracteres. Isso tudo me estressava profundamente, eu não conseguia entender o que eu tinha de fazer e acabava testando combinações aleatórias, esperando a primeira funcionar. Porém, como o nosso foco não pode conhecer limites, tive que aprender OGNL e gostar dela.
A OGNL não é nada mais, nada menos que um tipo de linguagem de escopo de página, usada para recuperar dados dos diferentes contextos de uma aplicação. Antes que você me pergunte se é possível utilizar OGNL com outro framework que não seja o Struts 2, eu te respondo que nunca vi tal integração. Nem com o Struts 1, acho que é possível.
Depois de um certo tempo de pesquisa, consegui achar uma resposta para minha penosa dúvida. Tal resposta a qual, servirá para construir exemplos em uma aplicação web mostrando que a mesma é verídica. Então, aperte seus cintos.
Como disse anteriormente, a OGNL é usada para recuperar valores de um determinado escopo onde, esse escopo pode ser request, sessão ou aplicação. Porém, antes de sabermos de qual escopo queremos recuperar nosso dado, precisamos saber qual o seu nome logo, sempre que usarmos OGNL temos que especificar qual o nome do nosso objeto (objectName) tanto, para simples recuperações quanto, para montagem de expressões. Esta é a nossa premissa básica.
Vou separar as explicações por perguntas, acho que assim fica mais fácil para você encontrar.
- Quando uso o # ?
- #objectName - Objeto que tenha sido criado usando as tags do struts com o escopo padrão.
- #parameters.objectName - Um parâmetro do request.
- #request.objectName - Um atributo de escopo de request.
- #session.objectName - Um atributo de escopo de sessão.
- #application.objectName - Um atributo de escopo de aplicação.
- #attr.objectName - Um atributo que pode estar nos seguintes contextos: page, request, session ou application. A busca é feita nessa ordem.
Figura 1 - Primeiro exemplo do uso da # |
Figura 2 - Segundo exemplo do uso da # |
- #escopo.objectName
- #escopo['objectName']
- Quando uso o %{expressão} ?
Figura 3 - Exemplo de uso do %{expressão} |
<s:set name="var" value="%{myDinamicValue}" />
<s:set name="var" value="myDinamicValue" />
No exemplo acima, o valor da nossa variável var, será o valor da variável myDinamicValue e no segundo exemplo, o valor final de var será a String myDinamicValue.
- Quando uso o @ ?
IMPORTANTE: A partir da versão 2.3.0, o acesso a recursos estáticos através de OGNL é deprecated.
Exemplo:
Figura 4 - Exemplo de uso do @ |
- Quando usamos o $ ?
Para baixar o projeto, clique aqui.
Dúvidas !? Sugestões ?! Críticas ou elogios ?!
Referências:
What's the difference between # , % and $ signs in Struts tags - http://stackoverflow.com/questions/8007858/whats-the-difference-between-and-signs-in-struts-tags
Um comentário:
perfeito !
Postar um comentário