Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • `StringValidator` will add the `maxlength` attribute if added to a component attached to an input tag
  • MinimumValidator and MaximumValidator are replaced by RangeValidator.minimum and RangeValidator.maximum respectively
  • `AbstractValidator` has been removed
  • `ValidationError` now makes creating standard error keys (classname and classname.subtype) easier. Before one had to do: new ValidationError().addMessageKey(validator.getClass().getSimpleName()) to construct the default key, now you can simply say new ValidationError(validator) and it will do the above for you. Also, for more specific keys one had to do new ValidationError().addMessageKey(validator.getClass().getSimpleName()+".variant"), now you can do new ValidationError(validator, "variant").
  • Most validators provide a `decorate(ValidationError, Validatable)` method for overriding how they report errors. For example, to add an extra resource key for the error message to StringValidator one can do

    Code Block
    class MyStringValidator extends StringValidator {
        ValidationError decorate(ValidationError error, IValidatable validatable) {
           error.addKey("mystringerror");
           return error;
        }
    }
    
  • org.apache.wicket.validation.RawValidationError is introduced. It can be used to bring a raw Serializable object which is registered as FeedbackMessage with org.apache.wicket.Component#error(Serializable).
  • IFormValidator can have its own resource bundle as other IValidator implementations. WICKET-3879
  • CheckBox never fails required check: WICKET-1221

Feedback Storage Refactoring

...

  • ResourceStreamLocator now purely generates pathnames using a ResourceNameIterator and then uses a list of IResourceFinders to actually get those resources.
  • ResourceStreamLocator no longer does resource loading from the classpath on its own. Instead, there is now ClassPathResourceFinder.
  • IResourceSettings no longer contains just a single ResourceFinder but rather a list of them that will be tried in the given order.
  • Path and WebApplicationPath no longer extend each other, and also no longer have a list of prefixes, only a single one. If you need several path prefixes, simply add more Paths, WebApplicationPaths or other IResourceFinder implementations to IResourceSettings#resourcesFinders.
  • The IResourcePath interface was removed, since each ResourceFinder now only has one path.
  • replace getResourceSettings().addResourceFolder("some/path") with getResourceSettings().getResourceFinders().add(new WebApplicationPath(getServletContext(), "some/path));

Changes to org.apache.wicket.ajax.json.* (since Wicket 6.27.0) Image AddedWICKET-6287 - Switch from json.org to open-json RESOLVED

Because of license issues all classes in the mentioned package have been replaced by classes of open-json (https://github.com/tdunning/open-json) which means that the basic functionality is nearly the same. Some classes however (example: org.json.HTTP) are throwing WicketRuntimeExceptions because there is no corresponding implementation in open-json, yet. json.org can be used in this case (can be found in the central maven repository) if the license conditions are accepted.

Minor changes

  • Files#getLocalFileFromUrl(URL) decodes url before returning file
  • WizardStep header labels encode their model values by default, override WizardStep#getHeader() if you need the old behavior (i.e. model values not encoded)
  • IErrorMessageSource#substitute(Map<String,Object>) was merged into IErrorMessageSource#getMessage(String, Map<String,Object>)
  • org.apache.wicket.util.resource.IResourceStreamWriter#write() now works again with java.io.OutputStream as in Wicket 1.4.x. WICKET-4601
  • WicketTester.startPanel -> WicketTester.startComponentInPage
  • WebSession#authenticate() was moved to AuthenticatedWebSession and now abstract
  • ChoiceFilteredPropertyColumn/ChoiceFilter use DropDownChoice#setNullValid(true) now