Re: Validation Being Called Twice

Jeff Dunnett <[email protected]>
Newsgroups gmane.comp.web.webobjects.devel
Message-ID <[email protected]>
First of all thanks for answering my question.


>
> It looks like you have told EOF that your firstName and lastName  
> cannot be NULL.
> After your form is posted, WO will call validateTakeValueForKey  
> (maybe a bit different spelling) which
> will do the validation for every key in your EO.
>
> Once you save your EditingContext those validating is done again.
>
> Set a breakpoint in your validation code and print the back trace.
>
> HTH
>
> Dave

Ok added some stack dumps to my code:

First before I call the save changes that calls the validation code:

             try{
                 logger.debug("Stack dump 1 - ");
                 Thread.dumpStack();
                 ec.saveChanges();
			}catch(Exception e){
                 logger.debug(e);
                 s.setErrorMessage(e.getMessage());
                 ec.revert();
                 return null;
             }

Then I added some code to produce stack dump in the validation code:

	public String validateHPostal(String value) throws  
NSValidation.ValidationException {

         logger.debug("Stack dump 2 - ");
         Thread.dumpStack();

         logger.debug("Value - " + value);

         String str = value;

         logger.debug("String - " + str);

         if (str == null || str.length() == 0 ){
             logger.debug("Value is null so we are throwing exception");
             logger.debug(value);
			throw new NSValidation.ValidationException("PostalCode cannot be  
left blank.");
		}else if( Pattern.matches("[A-Z][0-9][A-Z][0-9][A-Z][0-9]",  
str.subSequence(0, str.length()))){
             logger.debug("The string matches a Canadian postal code");
             return str = str.substring(0,3) + " " + str.substring(3,6);
         }else if(Pattern.matches("[A-Z][0-9][A-Z] [0-9][A-Z][0-9]",  
str.subSequence(0, str.length())) || Pattern.matches("[0-9]{5}(-[0-9] 
{4})?", str.subSequence(0, str.length()))){
             logger.debug("The string is a Postal Code or Zip Code");
             return str;
         }else{
             logger.debug("Stack dump 3 - ");
             Thread.dumpStack();
             logger.debug("We are throwing an exception because the  
registrant did not provide a valid Canadian postal code");
             throw new NSValidation.ValidationException("You must  
provide a valid Canadian postal code or American zip code");
         }
	}

Here is the log output:

2007-02-15 11:20:33,310 [WorkerThread4] DEBUG Registrant - Stack dump  
2 -
java.lang.Exception: Stack trace
         at java.lang.Thread.dumpStack(Thread.java:1176)
         at Registrant.validateHPostal(Registrant.java:131)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at  
com.webobjects.foundation._NSReflectionUtilities._invokeMethodOnObject 
(_NSReflectionUtilities.java:383)
         at com.webobjects.foundation.NSValidation 
$_MethodBinding.validateValueOnObject(NSValidation.java:615)
         at com.webobjects.foundation.NSValidation 
$DefaultImplementation._validateValueForKey(NSValidation.java:705)
         at  
com.webobjects.eocontrol.EOCustomObject.validateValueForKey 
(EOCustomObject.java:1341)
         at com.webobjects.foundation.NSValidation 
$Utility.validateValueForKey(NSValidation.java:526)
         at com.webobjects.foundation.NSValidation 
$DefaultImplementation.validateTakeValueForKeyPath(NSValidation.java: 
729)
         at  
com.webobjects.eocontrol.EOCustomObject.validateTakeValueForKeyPath 
(EOCustomObject.java:1363)
         at com.webobjects.foundation.NSValidation 
$Utility.validateTakeValueForKeyPath(NSValidation.java:551)
         at com.webobjects.foundation.NSValidation 
$DefaultImplementation.validateTakeValueForKeyPath(NSValidation.java: 
741)
         at  
com.webobjects.appserver.WOComponent.validateTakeValueForKeyPath 
(WOComponent.java:1273)
         at  
com.webobjects.appserver._private.WOKeyValueAssociation.setValue 
(WOKeyValueAssociation.java:71)
         at  
com.webobjects.appserver._private.WOTextField.takeValuesFromRequest 
(WOTextField.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at  
com.webobjects.appserver._private.WOForm.takeValuesFromRequest 
(WOForm.java:70)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at  
com.webobjects.appserver._private.WOComponentContent.takeValuesFromReque 
st(WOComponentContent.java:20)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at com.webobjects.appserver.WOComponent.takeValuesFromRequest 
(WOComponent.java:914)
         at  
com.webobjects.appserver._private.WOComponentReference.takeValuesFromReq 
uest(WOComponentReference.java:97)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at com.webobjects.appserver.WOComponent.takeValuesFromRequest 
(WOComponent.java:914)
         at com.webobjects.appserver.WOSession.takeValuesFromRequest 
(WOSession.java:1139)
         at  
com.webobjects.appserver.WOApplication.takeValuesFromRequest 
(WOApplication.java:1350)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedPage(WOComponentRequestHandler.java:189)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedSession(WOComponentRequestHandler.java:287)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedApplication(WOComponentRequestHandler.java:322)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._handleReque 
st(WOComponentRequestHandler.java:358)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler.handleReques 
t(WOComponentRequestHandler.java:432)
         at com.webobjects.appserver.WOApplication.dispatchRequest 
(WOApplication.java:1306)
         at com.webobjects.appserver._private.WOWorkerThread.runOnce 
(WOWorkerThread.java:173)
         at com.webobjects.appserver._private.WOWorkerThread.run 
(WOWorkerThread.java:254)
         at java.lang.Thread.run(Thread.java:613)
2007-02-15 11:20:33,314 [WorkerThread4] DEBUG Registrant - Value - 4345
2007-02-15 11:20:33,314 [WorkerThread4] DEBUG Registrant - String - 4345
2007-02-15 11:20:33,315 [WorkerThread4] DEBUG Registrant - Stack dump  
3 -
java.lang.Exception: Stack trace
         at java.lang.Thread.dumpStack(Thread.java:1176)
         at Registrant.validateHPostal(Registrant.java:152)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at  
com.webobjects.foundation._NSReflectionUtilities._invokeMethodOnObject 
(_NSReflectionUtilities.java:383)
         at com.webobjects.foundation.NSValidation 
$_MethodBinding.validateValueOnObject(NSValidation.java:615)
         at com.webobjects.foundation.NSValidation 
$DefaultImplementation._validateValueForKey(NSValidation.java:705)
         at  
com.webobjects.eocontrol.EOCustomObject.validateValueForKey 
(EOCustomObject.java:1341)
         at com.webobjects.foundation.NSValidation 
$Utility.validateValueForKey(NSValidation.java:526)
         at com.webobjects.foundation.NSValidation 
$DefaultImplementation.validateTakeValueForKeyPath(NSValidation.java: 
729)
         at  
com.webobjects.eocontrol.EOCustomObject.validateTakeValueForKeyPath 
(EOCustomObject.java:1363)
         at com.webobjects.foundation.NSValidation 
$Utility.validateTakeValueForKeyPath(NSValidation.java:551)
         at com.webobjects.foundation.NSValidation 
$DefaultImplementation.validateTakeValueForKeyPath(NSValidation.java: 
741)
         at  
com.webobjects.appserver.WOComponent.validateTakeValueForKeyPath 
(WOComponent.java:1273)
         at  
com.webobjects.appserver._private.WOKeyValueAssociation.setValue 
(WOKeyValueAssociation.java:71)
         at  
com.webobjects.appserver._private.WOTextField.takeValuesFromRequest 
(WOTextField.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at  
com.webobjects.appserver._private.WOForm.takeValuesFromRequest 
(WOForm.java:70)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at  
com.webobjects.appserver._private.WOComponentContent.takeValuesFromReque 
st(WOComponentContent.java:20)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at com.webobjects.appserver.WOComponent.takeValuesFromRequest 
(WOComponent.java:914)
         at  
com.webobjects.appserver._private.WOComponentReference.takeValuesFromReq 
uest(WOComponentReference.java:97)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeChildrenValuesFromR 
equest(WODynamicGroup.java:81)
         at  
com.webobjects.appserver._private.WODynamicGroup.takeValuesFromRequest 
(WODynamicGroup.java:89)
         at com.webobjects.appserver.WOComponent.takeValuesFromRequest 
(WOComponent.java:914)
         at com.webobjects.appserver.WOSession.takeValuesFromRequest 
(WOSession.java:1139)
         at  
com.webobjects.appserver.WOApplication.takeValuesFromRequest 
(WOApplication.java:1350)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedPage(WOComponentRequestHandler.java:189)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedSession(WOComponentRequestHandler.java:287)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedApplication(WOComponentRequestHandler.java:322)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._handleReque 
st(WOComponentRequestHandler.java:358)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler.handleReques 
t(WOComponentRequestHandler.java:432)
         at com.webobjects.appserver.WOApplication.dispatchRequest 
(WOApplication.java:1306)
         at com.webobjects.appserver._private.WOWorkerThread.runOnce 
(WOWorkerThread.java:173)
         at com.webobjects.appserver._private.WOWorkerThread.run 
(WOWorkerThread.java:254)
         at java.lang.Thread.run(Thread.java:613)
2007-02-15 11:20:33,318 [WorkerThread4] DEBUG Registrant - We are  
throwing an exception because the registrant did not provide a valid  
Canadian postal code
[2007-02-15 11:20:33 EST] <WorkerThread4> Validation failed on an  
object [java.lang.String] with keypath = registrant.hPostal and  
exception: You must provide a valid Canadian postal code or American  
zip code
[2007-02-15 11:20:33 EST] <WorkerThread4> Validation failed on an  
object [null] with keypath = aGuest.firstName and exception: the  
first name field cannot be left blank.
[2007-02-15 11:20:33 EST] <WorkerThread4> Validation failed on an  
object [null] with keypath = aGuest.lastName and exception: the last  
name field cannot be left blank.
2007-02-15 11:20:33,358 [WorkerThread4] DEBUG RegistrationPage -  
***********We are calling saveRegistration***********
2007-02-15 11:20:33,373 [WorkerThread4] DEBUG RegistrationPage -  
Stack dump 1 -
java.lang.Exception: Stack trace
         at java.lang.Thread.dumpStack(Thread.java:1176)
         at RegistrationPage.saveRegistration(RegistrationPage.java:331)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at KeyValueCodingProtectedAccessor.methodValue 
(KeyValueCodingProtectedAccessor.java:54)
         at com.webobjects.foundation.NSKeyValueCoding 
$_MethodBinding.valueInObject(NSKeyValueCoding.java:1160)
         at com.webobjects.foundation.NSKeyValueCoding 
$DefaultImplementation.valueForKey(NSKeyValueCoding.java:1268)
         at com.webobjects.appserver.WOComponent.valueForKey 
(WOComponent.java:1539)
         at com.webobjects.foundation.NSKeyValueCoding 
$Utility.valueForKey(NSKeyValueCoding.java:498)
         at com.webobjects.foundation.NSKeyValueCodingAdditions 
$DefaultImplementation.valueForKeyPath(NSKeyValueCodingAdditions.java: 
212)
         at com.webobjects.appserver.WOComponent.valueForKeyPath 
(WOComponent.java:1600)
         at  
com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent 
(WOKeyValueAssociation.java:46)
         at  
com.webobjects.appserver._private.WOSubmitButton.invokeAction 
(WOSubmitButton.java:59)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at  
com.webobjects.appserver._private.WOConditional.invokeAction 
(WOConditional.java:55)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at com.webobjects.appserver._private.WOForm.invokeAction 
(WOForm.java:82)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at  
com.webobjects.appserver._private.WOComponentContent.invokeAction 
(WOComponentContent.java:31)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at com.webobjects.appserver.WOComponent.invokeAction 
(WOComponent.java:945)
         at  
com.webobjects.appserver._private.WOComponentReference.invokeAction 
(WOComponentReference.java:104)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at com.webobjects.appserver.WOComponent.invokeAction 
(WOComponent.java:945)
         at com.webobjects.appserver.WOSession.invokeAction 
(WOSession.java:1168)
         at com.webobjects.appserver.WOApplication.invokeAction 
(WOApplication.java:1375)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedPage(WOComponentRequestHandler.java:196)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedSession(WOComponentRequestHandler.java:287)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedApplication(WOComponentRequestHandler.java:322)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._handleReque 
st(WOComponentRequestHandler.java:358)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler.handleReques 
t(WOComponentRequestHandler.java:432)
         at com.webobjects.appserver.WOApplication.dispatchRequest 
(WOApplication.java:1306)
         at com.webobjects.appserver._private.WOWorkerThread.runOnce 
(WOWorkerThread.java:173)
         at com.webobjects.appserver._private.WOWorkerThread.run 
(WOWorkerThread.java:254)
         at java.lang.Thread.run(Thread.java:613)
2007-02-15 11:20:33,394 [WorkerThread4] DEBUG Registrant - Stack dump  
2 -
java.lang.Exception: Stack trace
         at java.lang.Thread.dumpStack(Thread.java:1176)
         at Registrant.validateHPostal(Registrant.java:131)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at  
com.webobjects.foundation._NSReflectionUtilities._invokeMethodOnObject 
(_NSReflectionUtilities.java:383)
         at com.webobjects.foundation.NSValidation 
$_MethodBinding.validateValueOnObject(NSValidation.java:615)
         at com.webobjects.foundation.NSValidation 
$DefaultImplementation._validateValueForKey(NSValidation.java:705)
         at  
com.webobjects.eocontrol.EOCustomObject.validateValueForKey 
(EOCustomObject.java:1341)
         at com.webobjects.eocontrol.EOCustomObject.validateForSave 
(EOCustomObject.java:1411)
         at com.webobjects.eocontrol.EOCustomObject.validateForInsert 
(EOCustomObject.java:1473)
         at com.webobjects.eocontrol.EOEditingContext.validateTable 
(EOEditingContext.java:2249)
         at  
com.webobjects.eocontrol.EOEditingContext.validateChangesForSave 
(EOEditingContext.java:3029)
         at  
com.webobjects.eocontrol.EOEditingContext._prepareForPushChanges 
(EOEditingContext.java:3283)
         at com.webobjects.eocontrol.EOEditingContext.saveChanges 
(EOEditingContext.java:3213)
         at RegistrationPage.saveRegistration(RegistrationPage.java:332)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at KeyValueCodingProtectedAccessor.methodValue 
(KeyValueCodingProtectedAccessor.java:54)
         at com.webobjects.foundation.NSKeyValueCoding 
$_MethodBinding.valueInObject(NSKeyValueCoding.java:1160)
         at com.webobjects.foundation.NSKeyValueCoding 
$DefaultImplementation.valueForKey(NSKeyValueCoding.java:1268)
         at com.webobjects.appserver.WOComponent.valueForKey 
(WOComponent.java:1539)
         at com.webobjects.foundation.NSKeyValueCoding 
$Utility.valueForKey(NSKeyValueCoding.java:498)
         at com.webobjects.foundation.NSKeyValueCodingAdditions 
$DefaultImplementation.valueForKeyPath(NSKeyValueCodingAdditions.java: 
212)
         at com.webobjects.appserver.WOComponent.valueForKeyPath 
(WOComponent.java:1600)
         at  
com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent 
(WOKeyValueAssociation.java:46)
         at  
com.webobjects.appserver._private.WOSubmitButton.invokeAction 
(WOSubmitButton.java:59)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at  
com.webobjects.appserver._private.WOConditional.invokeAction 
(WOConditional.java:55)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at com.webobjects.appserver._private.WOForm.invokeAction 
(WOForm.java:82)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at  
com.webobjects.appserver._private.WOComponentContent.invokeAction 
(WOComponentContent.java:31)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at com.webobjects.appserver.WOComponent.invokeAction 
(WOComponent.java:945)
         at  
com.webobjects.appserver._private.WOComponentReference.invokeAction 
(WOComponentReference.java:104)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction 
(WODynamicGroup.java:101)
         at  
com.webobjects.appserver._private.WODynamicGroup.invokeAction 
(WODynamicGroup.java:110)
         at com.webobjects.appserver.WOComponent.invokeAction 
(WOComponent.java:945)
         at com.webobjects.appserver.WOSession.invokeAction 
(WOSession.java:1168)
         at com.webobjects.appserver.WOApplication.invokeAction 
(WOApplication.java:1375)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedPage(WOComponentRequestHandler.java:196)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedSession(WOComponentRequestHandler.java:287)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit 
hPreparedApplication(WOComponentRequestHandler.java:322)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler._handleReque 
st(WOComponentRequestHandler.java:358)
         at  
com.webobjects.appserver._private.WOComponentRequestHandler.handleReques 
t(WOComponentRequestHandler.java:432)
         at com.webobjects.appserver.WOApplication.dispatchRequest 
(WOApplication.java:1306)
         at com.webobjects.appserver._private.WOWorkerThread.runOnce 
(WOWorkerThread.java:173)
         at com.webobjects.appserver._private.WOWorkerThread.run 
(WOWorkerThread.java:254)
         at java.lang.Thread.run(Thread.java:613)

I guess I should give you more information....The class that this  
validation method exist is in called Registrant and can have a  
relationship with another EO object called Guest.   In this case  
firstName and lastName come from the Guest object.  The problem is I  
have checked my model (and even the database table) and firstName and  
lastName in the Guest class are allowed to be null.  I am not sure  
why it is throwing exceptions for the firstName and lastName.  The  
Registrant EO object does not require a relationship to a Guest  
object.  In this case I am not even creating a Guest object.  Again  
thanks for you help.

Regards,
Jeff

_______________________________________________
WebObjects-dev mailing list
[email protected]
http://www.omnigroup.com/mailman/listinfo/webobjects-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.