5. Класс ValidationMessage должен хранить в себе не только текст сообщения об ошибке, но и тип ошибки - у нас их будет семь:
 - ошибка парсинга даты,
 - ошибка парсинга целого числа (бюджета),
 - ошибка парсинга дробного числа (рейтинга),
 - ошибка парсинга жанра фильма (хоть он и выбирается из готового списка, в URL можно вбить любую хрень, не только ACTION, COMEDY или DRAMA),
 - дата раньше нашего любимого 1700го года :),
 - бюджет отрицательный,
 - рейтинг отрицательный.

6. Валидация выполняется перед добавлением или апдейтом.
Список, возвращенный функцией, можно сохранять в локальную переменную с помощью <c:set>, например.
Если валидация не прошла - то список, возвращенный функцией, будет не пустой, и, соответственно, никаких добавлений или апдейтов делаться не должно.
Также при зафейленной валидации не должны очищаться поля ввода на странице - чтобы юзер мог покаяться и всё исправить :)