Fork me on GitHub
Edit on GitHub << back to Annotations

UrlValidator Annotation

This validator checks that a field is a valid URL.

Usage

 The annotation must be applied at method level.

Parameters

Parameter Required Default Notes
message yes   field error message
key no   i18n key from language specific properties file
messageParams no   additional params to be used to customize message - will be evaluated against the Value Stack
fieldName no   field name under validation
shortCircuit no false if this validator should be used as shortCircuit
urlRegex no   defines regex to use to validate url
urlRegexExpression no   defines regex as expression to validate url, expression will be evaluated against current stack to get proper regex
type yes ValidatorType.FIELD Enum 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}")

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})*)?" +
       "$";