Home > Guides > Core Developers Guide > Annotations > UrlValidator Annotation

This validator checks that a field is a valid URL.

Usage

 The annotation must be applied at method level.

Parameters

ParameterRequiredDefaultNotes
messageyes field error message
keyno i18n key from language specific properties file
messageParamsno additional params to be used to customize message - will be evaluated against the Value Stack
fieldNameno field name under validation
shortCircuitnofalseif this validator should be used as shortCircuit
urlRegexno defines regex to use to validate url
urlRegexExpressionno defines regex as expression to validate url, expression will be evaluated against current stack to get proper regex
typeyesValidatorType.FIELDEnum value from ValidatorType. Either FIELD or SIMPLE can be used here

Examples

UrlValidator usage example
@UrlValidator(message = "Default message", key = "i18n.key", shortCircuit = true)
UrlValidator usage example
@UrlValidator(message = "Default message", key = "i18n.key", urlRegexExpression = "${urlRegex}")

urlRegex neither urlRegexExpression are only used on client side to validate URLs - this will be changed with next major release!

If no urlRegex neither urlRegexExpression is defined, default regex will be used instead, based on StackOverflow answer

Default URL regex
return "^(https?|ftp):\/\/" +
       "(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+" +
       "(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+)?" +
       "@)?(#?" +
       ")((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*" +
       "[a-z][a-z0-9-]*[a-z0-9]" +
       "|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}" +
       "(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])" +
       ")(:\\d+)?" +
       ")(((\\/+([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)*" +
       "(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)" +
       "?)?)?" +
       "(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)?" +
       "$";