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] > > > > > > > > > > > > > >