Como usar o operador de referência de índice OGNL

Trabalhando com OGNL, você pode fazer referência a objetos de contexto de ação como#application, #session,#root, #action,#request,#parameters,#attre o contexto de ação com#context.

A estrutura define o contexto OGNL como ActionContext e a pilha de valores como objeto raiz OGNL.

E o OGNL usa[] como referência de índice para acessar as propriedades de um objeto. Por exemplo, se o objetofoo tem uma propriedadebar então ele pode acessar comofoo.bar oufoo['bar']. Também funciona sefoo é um mapa ebar é uma chave.

Agora, quero colocar uma variável e um valor no contexto da pilha de valores assim

<s:set var="bar" value="'hello'"/>
<s:set var="foo" value="'bar'"/>

e imprima o valor

<s:property value="%{#attr[#foo]}"/>

Deve imprimirhello.

Eu gostaria de saber como isso funciona. Eu sei disso#attr é um objeto que não possui uma propriedade referenciada por#foo, ou seja,bar. No entanto, isso funciona. Também funciona se eu usar#request e#contexte provavelmente#root ao invés de#attr. Nenhum desses objetos tem uma propriedadebar, mas o OGNL pensa de outra forma. Gostaria de saber o que o OGNL pensa sobre a propriedade do objeto que ele faz referência e por que essa expressão está funcionando. Além disso, se houver maneiras alternativas de imprimirhello usando#foo referência na expressão OGNL.

questionAnswers(1)

yourAnswerToTheQuestion