Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-5824

PropertyValidator sets "Required" flag too late in StatelessForm

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 7.0.0-M4
    • None
    • wicket-bean-validation
    • None
    • Windows 7, Wildfly 8.1.0

    Description

      I am writing a simple stateless form with validation based on annotations in Wicket 7.0.0-SNAPSHOT. When the model's field is annotated @NotNull and PropertyValidator is added to its form component, the validation error is not generated if user's input is empty. It seems to me that the "Required" flag is set too late, because while debugging I noticed that isRequired is called at least once before PropertyValidator's onConfigure. In the end the component has the flag set but without effect. As a workaround I have created descendants of CheckBox, TextArea and TextField with isRequired overriden as follows:

          @Override
          public boolean isRequired() {
              if (!isRequiredRecurse) {
                  isRequiredRecurse = true;
                  configure(); //this should let PropertyValidator call setRequired
                  isRequiredRecurse = false;
              }
              return super.isRequired();
          }
      

      Martin Grigorov kindly explained what is wrong here:
      The problem comes from the fact that you use stateless form. The required flag is set for the form component on the rendered page, but later when the form is submitted a new page with a new form (and components) is created and the flag is gone.
      Since there is no Behavior#onInitialize() we can only use #onBind() but as WICKET-5329 says at this time the parent may be not yet available and the logic breaks whenCompoundPropertyModel is used.

      Attachments

        Activity

          People

            ivaynberg Igor Vaynberg
            PreXident Adam Huječek
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: