param is a Map containing request parameters. So param.start will look for a request parameter called "start", and take its value. empty checks if a value is null or empty. Si if the "start" parameter does not exist, or if it's value is empty, it will return true. ${!empty param.start} will return true if "start" is not empty. If this is true, the body tag of the "if" tag will be executed.