0 Replies Latest reply on Sep 26, 2008 6:54 PM by David Spindle

    Partial Object Validation, AssertTrue, and Seam

    David Spindle Newbie

      Hi there-

      I am trying to figure out a way to explicitly call individual methods annotated with AssertTrue as opposed to all at once via the ClassValidator.  A little background...

      I have an entity with several methods annotated with AssertTrueto perform complex validation (validates multiple fields).  My web app plays nicely with this since I manually call Hibernate Validation from my own custom EntityHome interceptor on page actions. 

      From my HomeInterceptor.java:

          public Object aroundInvoke(InvocationContext ctx) throws Exception {
              // Only validate if the annotation is there...
              if (!ctx.getMethod().isAnnotationPresent(ValidatableAction.class)) {
                  return ctx.proceed();
              Object instance = ((Home<?, ?>) ctx.getTarget()).getInstance();
              ClassValidator<Object> validator = Validators.instance().getValidator(
              InvalidValue[] ivs = validator.getInvalidValues(instance);
              if (ivs.length > 0) {
                  for (InvalidValue invalidValue : ivs) {
                  return null;
              return ctx.proceed();

      When this code executes, it validates all the methods annotated with AssertTrue.  While that is good, what I really would like is to explicitly call certain methods annotated with AssertTrue

      The reason I would like to do this is that during my page-flow, the user is entering attributes to the entity page-by-page and I would like to call the relevant AssertTrue method for each page.  In short, partial object validation.

      Thanks in advance for your help!