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

PropertyValidator sets "Required" flag too late in StatelessForm



    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 7.0.0-M4
    • Fix Version/s: None
    • Component/s: wicket-bean-validation
    • Labels:
    • Environment:
      Windows 7, Wildfly 8.1.0


      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:

          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.




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


              • Created: