You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by J&M <ca...@yahoo.com> on 2007/11/08 13:13:14 UTC

OGNL struts property

Hi,

Can any body explain the following to me, I don't quite grok it. I have
added a property value via my action

ActionContext ctx = ActionContext.getContext();        
ctx.put("contextKey", "developer.page.logout");

In the jsp I have the following:

1 <s:property value="%{contextKey}"/>
2 <s:property value='%{contextKey+".title"}'/>
3 <s:property value='%{#contextKey+".title"}'/>
4 <s:property value='%{"string1"+".title"}'/>

This results in an output:

1 developer.page.logout
2 null.title
3 developer.page.logout.title
4 string1.title

Why does 2 give me a null output and 1 not, and 3 give me what I want. 
What is the significance of the # in this case?

Cheers
    Caleb.

-- 
View this message in context: http://www.nabble.com/OGNL-struts-property-tf4770568.html#a13645884
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: OGNL struts property

Posted by J&M <ca...@yahoo.com>.
Horay! You are the first person to actually see and acknowledge the problem.
So far I have only recieved comments about the difference between the hash
and the non hash version - which I get. But no one has explained why in the
case of #2 OGNL returns null and not the value of the property as in #1.

Any one else know?

To quote another email:

>> <s:property value='%{contextKey+".title"}'/> is not
>> <s:property value="%{contextKey}"/
>> 
>> for 2 reasons:
>> contextKey+".title" says take entity one called contextKey which is null
>> and append string of .title
>> says '' delivers literal constant
>
> The entity contextKey is not null (this is seen by the other example which
> echoes the content) 
> unless adding an operator (+) in this case introduced a new implicit scope
> (which goes against 
> my expectations). Then perhaps in the scope of the + the contextKey entity
> is not defined - 
> consequently it returns null appended to the literal? (if thats so, then
> ognl is very odd)
>
> Or have I still not got it?
>
> Cheers
>    Caleb.




newton.dave wrote:
> 
> To continue, the first one (probably; I'm still a
> little fuzzy on OGNL sometimes) works because if a
> property isn't found in the action it will continue
> looking on the stack until it finds it or runs out.
> 
> Now, as to why #2 "doesn't work", I'm a little hazier
> on that: perhaps when OGNL has an expression tree it
> does lookup a bit differently or something?
> 
> d.
> 
> 
> --- Musachy Barroso <mu...@gmail.com> wrote:
> 
>> in OGNL there is always an object that is the
>> "root", so %{name} is
>> actually calling root.getName(). The "#" is used to
>> reference
>> something else than the root. In your views, your
>> action will be the
>> OGNL root (unless some tag pushes something to the
>> stack), to refer to
>> your property you would need #contextKey.
>> 
>> 
>> musachy
>> 
>> On Nov 8, 2007 7:13 AM, J&M <ca...@yahoo.com>
>> wrote:
>> >
>> > Hi,
>> >
>> > Can any body explain the following to me, I don't
>> quite grok it. I have
>> > added a property value via my action
>> >
>> > ActionContext ctx = ActionContext.getContext();
>> > ctx.put("contextKey", "developer.page.logout");
>> >
>> > In the jsp I have the following:
>> >
>> > 1 <s:property value="%{contextKey}"/>
>> > 2 <s:property value='%{contextKey+".title"}'/>
>> > 3 <s:property value='%{#contextKey+".title"}'/>
>> > 4 <s:property value='%{"string1"+".title"}'/>
>> >
>> > This results in an output:
>> >
>> > 1 developer.page.logout
>> > 2 null.title
>> > 3 developer.page.logout.title
>> > 4 string1.title
>> >
>> > Why does 2 give me a null output and 1 not, and 3
>> give me what I want.
>> > What is the significance of the # in this case?
>> >
>> > Cheers
>> >     Caleb.
>> >
>> > --
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/OGNL-struts-property-tf4770568.html#a13664415
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: OGNL struts property

Posted by Dave Newton <ne...@yahoo.com>.
To continue, the first one (probably; I'm still a
little fuzzy on OGNL sometimes) works because if a
property isn't found in the action it will continue
looking on the stack until it finds it or runs out.

Now, as to why #2 "doesn't work", I'm a little hazier
on that: perhaps when OGNL has an expression tree it
does lookup a bit differently or something?

d.

--- Musachy Barroso <mu...@gmail.com> wrote:

> in OGNL there is always an object that is the
> "root", so %{name} is
> actually calling root.getName(). The "#" is used to
> reference
> something else than the root. In your views, your
> action will be the
> OGNL root (unless some tag pushes something to the
> stack), to refer to
> your property you would need #contextKey.
> 
> 
> musachy
> 
> On Nov 8, 2007 7:13 AM, J&M <ca...@yahoo.com>
> wrote:
> >
> > Hi,
> >
> > Can any body explain the following to me, I don't
> quite grok it. I have
> > added a property value via my action
> >
> > ActionContext ctx = ActionContext.getContext();
> > ctx.put("contextKey", "developer.page.logout");
> >
> > In the jsp I have the following:
> >
> > 1 <s:property value="%{contextKey}"/>
> > 2 <s:property value='%{contextKey+".title"}'/>
> > 3 <s:property value='%{#contextKey+".title"}'/>
> > 4 <s:property value='%{"string1"+".title"}'/>
> >
> > This results in an output:
> >
> > 1 developer.page.logout
> > 2 null.title
> > 3 developer.page.logout.title
> > 4 string1.title
> >
> > Why does 2 give me a null output and 1 not, and 3
> give me what I want.
> > What is the significance of the # in this case?
> >
> > Cheers
> >     Caleb.
> >
> > --
> > View this message in context:
>
http://www.nabble.com/OGNL-struts-property-tf4770568.html#a13645884
> > Sent from the Struts - User mailing list archive
> at Nabble.com.
> >
> >
> >
>
---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> user-unsubscribe@struts.apache.org
> > For additional commands, e-mail:
> user-help@struts.apache.org
> >
> >
> 
> 
> 
> -- 
> "Hey you! Would you help me to carry the stone?"
> Pink Floyd
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> user-unsubscribe@struts.apache.org
> For additional commands, e-mail:
> user-help@struts.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: OGNL struts property

Posted by Musachy Barroso <mu...@gmail.com>.
in OGNL there is always an object that is the "root", so %{name} is
actually calling root.getName(). The "#" is used to reference
something else than the root. In your views, your action will be the
OGNL root (unless some tag pushes something to the stack), to refer to
your property you would need #contextKey.


musachy

On Nov 8, 2007 7:13 AM, J&M <ca...@yahoo.com> wrote:
>
> Hi,
>
> Can any body explain the following to me, I don't quite grok it. I have
> added a property value via my action
>
> ActionContext ctx = ActionContext.getContext();
> ctx.put("contextKey", "developer.page.logout");
>
> In the jsp I have the following:
>
> 1 <s:property value="%{contextKey}"/>
> 2 <s:property value='%{contextKey+".title"}'/>
> 3 <s:property value='%{#contextKey+".title"}'/>
> 4 <s:property value='%{"string1"+".title"}'/>
>
> This results in an output:
>
> 1 developer.page.logout
> 2 null.title
> 3 developer.page.logout.title
> 4 string1.title
>
> Why does 2 give me a null output and 1 not, and 3 give me what I want.
> What is the significance of the # in this case?
>
> Cheers
>     Caleb.
>
> --
> View this message in context: http://www.nabble.com/OGNL-struts-property-tf4770568.html#a13645884
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org