In my opinion is all that you want is not having NullPointerException it
would be better to implement MethodAccessor and/or PropertyAccessor, that
would return null if the target object is null, then you could simply check
expressions returning nulls and returning your message, or maybe have a
special component doing this.

Tapestry has configuration point also for default Method/Property accessors.


On 7/26/07, Marcos Chicote <[EMAIL PROTECTED]> wrote:
>
> Responding to my own mail...
>
> I found an old Andreas mail to the lis (
> http://mail-archives.apache.org/mod_mbox/tapestry-dev/200606.mbox/[EMAIL 
> PROTECTED]
> )
>
> that explained how to do this.
>
> I'll sumarize my ideas so that I can check if they are correct and maybe
> it
> will result usefull to the next person that wants to do this.
>
> The idea is to define a class that implements NullHandler (
> http://www.ognl.org/2.6.9/Documentation/javadoc/ognl/NullHandler.html).
> That class job is to handle null's when an specific class access to
> property
> returns null.
> To make tapestry use your NullHandler you define something like this in
> your hivemind configuration file:
>
>     <contribution configuration-id="tapestry.ognl.NullHandlers">
>         <null-handler class="classThatImplementsNullHandler"
>             object="instance:classToCaptureNulls"/>
>     </contribution>
>
> where classToCaptureNulls represents the name of the class who's nulls you
>
> want to handle and classThatImplementsNullHandler represents the class
> that
> knows how to deal with nulls in classToCaptureNulls.
>
> Now that I have this working I would like to know how to use it :D
>
> I mean, if I have a long ognl expression like obj1.obj2.obj3.obj4 and
> access
> to obj2 in obj1 return null, I would like to show an "obj2 not available"
> message on screen.
>
> Can anyone help me on how to use this service?
>
> Thanks!
>
> Marcos
>
> On 7/26/07, Marcos Chicote <[EMAIL PROTECTED]> wrote:
> >
> > Hi Andreas!
> > When I emailed to Tapestry's list I was prototyping a project. Now I'm
> > actually developing it and I'm very interested in getting this service
> > working.
> >
> > Did you find some code where you used this feature?
> >
> > Thanks!
> >
> > Marcos
> >
> > On 6/29/07, Marcos Chicote <[EMAIL PROTECTED]> wrote:
> > >
> > > Thanks Andreas.
> > > I have to do some more reading then.
> > >
> > > I you have some code that I can use as an example I would be really
> > > grateful.
> > >
> > > Thanks!
> > >
> > > Marcos
> > >
> > > On 6/29/07, Andreas Andreou < [EMAIL PROTECTED]> wrote:
> > > >
> > > > O/H Marcos Chicote έγραψε:
> > > > > Thanks Andreas.
> > > > > Before mailing to this list, I tried looking at the ognl
> > > > documentation
> > > > > and I
> > > > > found the NullHandler interface but I wasn't sure how it worked
> with
> > > >
> > > > > Tapestry or if it was possible to do it another way without
> altering
> > > > the
> > > > > BOs.
> > > > >
> > > > > Correct me if I'm wrong but what I understand is that Tapestry
> > > > already
> > > > > implements a Hivemind service that does the null handling. All I
> > > > have
> > > > > to do
> > > > > is make my BOs implement NullHandler interface. Am I right?
> > > > Hmmm, not really... Tapestry simply provides that point so that your
>
> > > > have a global
> > > > way of registring handlers - so, making your BOs implement
> NullHandler
> > > >
> > > > is not enough
> > > >
> > > > Also, i'm not sure if that's the correct approach - seems it polutes
>
> > > > your BOs
> > > >
> > > > I think I'd create a service that would be able to null-handle your
> > > > specific objects, and
> > > > esp. of all those objects have a common superclass, i'd be able to
> > > > register them all at once.
> > > >
> > > > I'll dig in for some code - it's been a while since i last used this
> > > >
> > > > >
> > > > > Thanks a lot!
> > > > >
> > > > > Marcos
> > > > >
> > > > > On 6/29/07, Andreas Andreou <[EMAIL PROTECTED]> wrote:
> > > > >>
> > > > >>
> > > > >>
> > > > http://tapestry.apache.org/tapestry4.1/tapestry-framework/hivedoc/config/tapestry.ognl.NullHandlers.html
>
> > > > >>
> > > > >>
> > > > >> the way it works, is that you associate implementations of
> > > > >>
> > > >
> http://www.ognl.org/2.6.9/Documentation/javadoc/ognl/NullHandler.html
> > > > >> with class types whose methods (or properties) may return null
> > > > >>
> > > > >> O/H Marcos Chicote έγραψε:
> > > > >> > Hi!
> > > > >> > I have a Table component (actually I have TableRows, TableView,
> > > > and
> > > > >> all
> > > > >> > those other components that form a Table) and one of the
> columns
> > > > in
> > > > >> > TableView is declared like this: columnName:
> > > > object1.object2.property.
> > > > >> >
> > > > >> > As you can see this can throw NullPointerException if either
> > > > >> object1 or
> > > > >> > object2 are null.
> > > > >> >
> > > > >> > To solve this problem, I have to alternatives:
> > > > >> > a) Use a Block component called columnNameColumnValue an inside
>
> > > > the
> > > > >> > block an
> > > > >> > Insert component with a value asociated with the page's class
> > > > that
> > > > >> > handles
> > > > >> > nulls
> > > > >> > b) Declare the column like: columnName:object1.propertyObject2.
> > > > (that
> > > > >> > it a
> > > > >> > getPropertyObject2 method in object1 class that handles nulls).
>
> > > > >> >
> > > > >> > Is there a better way to solve this?? I would love something
> like
> > > > a
> > > > >> > prefix
> > > > >> > that allows me to specify that whenever a NPE is found, a blank
>
> > > > >> space is
> > > > >> > rendered. Is something like that possible?
> > > > >> >
> > > > >> > I'm ussing Tapestry 4.1.1.
> > > > >> >
> > > > >> > Btw, great work with Tap4.1.2, congratulations!
> > > > >> >
> > > > >> > Thanks!
> > > > >> >
> > > > >>
> > > > >> --
> > > > >> Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
> > > > >> Tapestry / Tacos developer
> > > > >> Open Source / J2EE Consulting
> > > > >>
> > > > >>
> > > > >>
> > > >
> ---------------------------------------------------------------------
> > > > >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > >> For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >>
> > > > >>
> > > >
> > > > --
> > > > Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
> > > > Tapestry / Tacos developer
> > > > Open Source / J2EE Consulting
> > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> >
>

Reply via email to