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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>
>> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]