We have a situation in budget where we are doing some extra processing of lookup results (overriding LookupAction), if there are errors we add them to GlobalVariables errorMap and then call LookupAction.search to redisplay the search
results. LookupAction:search calls validateSearchParameters on lookupable, which calls lookupableHelperService and the default AbstractLookupableHelperServiceImpl implementation. The default implementation throws an exception at the
end of processing if the errorMap is not empty:
throw new ValidationException("errors in search criteria");
So if there were errors previous to the method call but the validation was OK an exception will still be thrown. I believe it would be better if the method just checked for errors encountered within the method itself (maybe by a boolean) and then throw
an exception, allowing for the errorMap to contain errors from previous code.