Re: EOF objects and NON NULL validation
Chuck Hill <[email protected]> Thu, 06 Nov 2003 16:16:31 -0800
| Newsgroups | gmane.comp.web.webobjects.eof,gmane.comp.web.webobjects.devel |
|---|---|
| Message-ID | <[email protected]> |
You kind of on the wrong track. Try reading this: http://www.stepwise.com/Articles/Technical/2001-06-13.01.html Chuck At 07:20 PM 06/11/2003 +0100, Serge Cohen wrote: >-----BEGIN PGP SIGNED MESSAGE----- >Hash: SHA1 > >Hello List; > >I'm developing a Web-Application, using WebObject and EOF together. >In my data model, one of the attributes (lets call it Label, for the >entity Foo) should never be empty, so in EOModeler I've set the >attribute so that it does not allow nulls. > >I have a web form to generates Foo entities, and there is a WOTextField >used to get the content of 'Label'. >If the user let the Label text field empty, I get an exception thrown, >because foo.label is not allowed to be null. This is normal; that's >what I expect from a non null attribute, but I'd like to get a bit of >control over, so that I can take my own action in such a case. > >Reading the manual, I've found (not too hard), that each class can have >validateKey methods, used to validate attributes BEFORE they are set, >seems what I was looking for... > >I have written a validateLabel method for the Foo class. I've checked >that this method is called anytime before the setLabel method is >called, and it's fine... EXCEPT when the value to which Label is set is >null... To be exact, if the textfield is directly connected to the >aFoo.label path, then the 'aFoo.setLabel(value)' is not called, still I >get an exception thrown that the Label can not be null. > >To be even more sure, I added a couple of println statement in my >validateLabel() and setLabel() method: >- - -When the value is not null, I see that validateLabel() is first >called, then it exits, then setLabel() is called and exits. >- - -When the value is null, I see that the exception is thrown BEFORE >any of this line are printed : these methods (validateLabel, setLabel) >does not even have the chance to modify the value for it to be non >null... > > From the stack trace I can see that the exception is raised in: > at >com.webobjects.eoaccess.EOAttribute.validateValue(EOAttribute.java:2315) > at >com.webobjects.eoaccess.EOEntityClassDescription.validateValueForKey(EOE >ntityClassDescription.java:439) > at >com.webobjects.eocontrol.EOCustomObject.validateValueForKey(EOCustomObje >ct.java:1332) > >EOCustomObject from which my object inherit (through EOGenericRecord). > >Is there anyway to avoid having to override >EOCustomObject.validateValueForKey, still have the validateLabel called >before the generic validateValue method (the one checking it's not >null)? I have the feeling it can be quiet tricky to override this >method and avoiding getting things wrong... I've not found any >doc/example about overriding this method. > > >I've searched the doc to get a better grasp of the validation/setting >cycle after a user submit a form, but I've found no precise description. > > >Thanks for any tips, info, or pointer to resources!! >(it's also likely that I've been too far in the analysis... and that I >just missed the simple+proper solution!!) > >Serge. > >- ---------------------------------------------------- >Serge Cohen > >GPG Key ID: 9CBB58FB >- ---------------------------------------------------- >-----BEGIN PGP SIGNATURE----- >Version: GnuPG v1.2.1 (Darwin) > >iD8DBQE/qpBb5EPeG5y7WPsRAk9GAJ9DDJUyMpjkSVCUM2Ye9u362IdlpgCfbXBU >huuGkksVUd+U3o6ziNE6pgU= >=FCaZ >-----END PGP SIGNATURE----- > > > >_______________________________________________ >EOF mailing list >[email protected] >http://www.omnigroup.com/mailman/listinfo/eof > >