You may want to try to make your validator object be aware of the current context/conversation/use case (pick a word which is appropriate for your situation). My own project does not have any validator object yet (all the constraint logic is either in entity beans or in the entity manager beans), but I imagine it is possible to put a field
in your validator. And also setter and getter for this field. Your other objects like Person object can call the setter to let the validator know the current context/conversation/use case before calling the validation method. So that the current current context/conversation/usecase information is available in your validator object. Conceptually it should work.
You can put the names of all the app-specific context/conversation/use case in a enum to eliminate String typing errors in your java class. An example can be seen here: