On Wed, Mar 5, 2008 at 9:56 PM, Dale Newfield <[EMAIL PROTECTED]> wrote:
> Chris Pratt wrote:
> > <!-- Equals(): <s:property
> > value='%{originalMember.name.equals(currentMember.name)}'/> -->
>
> Just to be pedantic, can you also verify that:
>
> <!-- Equals(): <s:property
> value='%{currentMember.name.equals(originalMember.name)}'/> -->
>
> yields:
>
> <!-- Equals(): true -->
>
> ?
> All correctly implemented equals methods are symmetric, so in the event
> OGNL decides that neither of these are null and that it should call the
> equals() method, it could theoretically do so in either order. If the
> reversed order (above) throws an exception then that would explain the
> observed output.
Yup, running:
<!-- Original: "<s:property value='%{originalMember.name}'/>" -->
<!-- Current: "<s:property value='%{currentMember.name}'/>" -->
<!-- Equals(): <s:property
value='%{originalMember.name.equals(currentMember.name)}'/> -->
<!-- Equals(): <s:property
value='%{CurrentMember.name.equals(originalMember.name)}'/> -->
<!-- Equals: <s:property value='%{originalMember.name ==
currentMember.name}'/> -->
Yields:
<!-- Original: "CHRIS PRATT" -->
<!-- Current: "CHRIS PRATT" -->
<!-- Equals(): true -->
<!-- Equals(): true -->
<!-- Equals: -->
>
> Assuming that's not it, I'd suggest instrumenting your model to log when
> the equals and getName methods are called so you can verify it's making
> the calls you expect.
I added some instrumentation and it appears that OGNL is not calling
the equals method when I use the == operator, only when I explicitly
call .equals().
>
> I agree it does seem strange.
> Also: Which version of ognl are you using?
>
I'm using the one that comes with 2.0.11.1 (and I've seen this on
2.0.11 also), I believe the jar file is ognl-2.6.11.jar
(*Chris*)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]