Hi Ramsey, >> swallowed in ERD2WPage since d2wContext().propertyKey() is null. Setting the >> propertyKey from the exception resolves this: >> >> if (d2wContext().propertyKey() == null && erv.propertyKey() != >> null) { >> d2wContext().setPropertyKey(erv.propertyKey()); >> } >> >> Maybe this (or some better solution) should be added to ERD2W? > > I don't remember exactly why I didn't do this, but I think it broke query > validation. Hence why I wanted to make a pluggable validation delegate. The > logic in there has become so overloaded, it's difficult to make changes > without breaking something for someone, somewhere :-)
I haven't yet looked into query validation. How could I test this? >> It seems to me that the whole validationKeys approach is unusable otherwise? > > Using validateKeys would be the correct approach. But were you actually able > to display the error with validateKeys on an ERMODWizard page? Last time I > tried that, it didn't work... > > https://github.com/projectwonder/wonder/issues/97 Well, with the modification above it works for me. That's the only thing I had to change for it to work. I still wonder why this missing validation seems not to bother anybody. I'd expect validation of mandatory to-ones to "just work". It's no fun if you edit something and on the 7th step you're told you forgot to set a property on the 1st step. Or is there something I'm overlooking? cheers, Fabian > Ramsey > >> >> Any input appreciated! >> >> cheers, Fabian >> >> >> Am 26.08.2011 um 17:51 schrieb Ramsey Gurley: >> >>> >>> On Aug 26, 2011, at 2:05 AM, David Avendasora wrote: >>> >>>> Hey D2Wers, >>>> >>>> So, I have business logic that executes in the setter of one of my >>>> attributes. >>> >>> In the setter? Any reason why you don't use validate<Key>() or maybe >>> validateFor*()? I've learned the hard way that business logic in a setter >>> is a sign of bad things to come. It's like exposing PKs and FKs. It >>> works… sorta, for a while… but sooner or later… BLAM! >>> >>>> It's checking to make sure that at least one of a set of objects has a >>>> flag set. If you try to remove the flag off the last object it should not >>>> allow it and throw and exception. >>>> >>>> All that works just fine. >>>> >>>> Now I want to catch that exception and display it to the user in a >>>> friendly way. Ideally basically the same as how standard validation >>>> exceptions are displayed in red at the top of the page in ERModernLook. >>>> >>>> I've tried throwing a ValidationException and also tried other exceptions, >>>> and either it is ignored with no user feedback (ValidationException), or I >>>> get the standard, completely disruptive exception page (for all others). >>>> >>>> I've tried to find the extension point to put in my own exception >>>> handling, but it's apparently not where I thought it was - >>>> ERD2WInspectPage#tryToSaveChanges. >>>> >>>> Am I doing it wrong, or just looking in the wrong place? >>>> >>>> Dave >>> >>> I suspect your validation exception may be getting swallowed in ERD2WPage's >>> validationFailedWithException method. Put a breakpoint in there and follow >>> the execution. If you throw an ERXValidationException and the >>> d2wContext().propertyKey() is null, then the exception never makes it into >>> the error messages dictionary. >>> >>> I've planned on fixing this, but I want to make the validation handling use >>> a plugable delegate with a default similar to the one now. That way, I >>> hope to build a new implementation so that I can provide enhanced >>> validation on something like an editable list page where you may have >>> multiple objects with different validation exceptions related to them. >>> >>> Ramsey >>> >>> >>> _______________________________________________ >>> Do not post admin requests to the list. They will be ignored. >>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>> Help/Unsubscribe/Update your Subscription: >>> http://lists.apple.com/mailman/options/webobjects-dev/lists.fabian%40e-lumo.com >>> >>> This email sent to lists.fab...@e-lumo.com >> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/webobjects-dev/rgurley%40smarthealth.com >> >> This email sent to rgur...@smarthealth.com > _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com