Професионална програма
Loading...
+ Нов въпрос
ItsGosho avatar ItsGosho 5 Точки

Spring Validation Handling Question

Имам следните въпроси отностно back-end & front-end валидациите:

1.Грешно ли е ако във Post Controller-a не връщаме грешки ,а ги обработваме динамично с JScript на front-end за по-добър user experience?

2.Грешно ли е ако не използваме никаква валидация във Dto-то ни с анотациите на javax.validation ,а си направим наш клас например UserRegisterDtoValidation ,който бива извикан при регистрация във UserService-а ни и всички нужни проверки се случат във него клас?

Тагове:
0
Java MVC Frameworks - Spring
TeodorStefanovPld avatar TeodorStefanovPld 1282 Точки

Първии въпрос на front end-a не е много добре защото всеки може да ти подмени нещата в страницата и не е сигурно... но можеш с js да връщаш динамично ерорс като се опитват да се регистрират примерно.

 А за втория искаш да пренапишеш нещо което е готово и гарантирано работи?,why? Ще го оптимизираш по-добре от тях ли? Или ще е с по-малко бъгове, ако искаш някакви custom валидаций е ок да extend-неш но да пренаписваш техните неща защото си решил по твоя си начин да го правиш е малко глупаво.

0
31/12/2018 23:06:10
icowwww avatar icowwww 958 Точки

Аз не виждам причина да се стига до Post във форма за създаване на нов акаунт при грешно написан емейл без '@' или парола, която не съдържа необходимия брой символи например. Изглежда ужасно. Обаче помня, когато учех MVC, как трябваше да избягваме ползването на javascript, тъй като курса все пак беше MVC, a и повечето от колегите не го бяха учили все още. 

0
03/01/2019 15:21:44
MartinBG avatar MartinBG 2781 Точки

Почти всички смислени валидации на фронт-енда могат да се реализират с чист HTML (единственото, което е сещам за JS е проверка за съвпадение на password/confirmPassword).

Не е грешно и дори е силно препоръчително да има такива валидации, но те са само за по-добър user experience и в никакъв случай не заместват валидациите в бекенда.

 

Валидацията на binding модела (това, което ти наричаш DTO) е на практика задължителна, защото там можем най-рано да хванем невалидните данни.

Може (и е добре) да се направи още в контролера - ако ползваме анотациите това може да се автоматизира, и още там да връщаме грешка при невалидни данни.

Аз валидирам binding моделите и в сервиза (преди да ги мапна към entity), защото не е задължително binding моделите са дошли през методите на контролера.

Добра практика е да имаме валидация и на ентитито (идентична с тази на binding моделите), защото това ще ни предпази от изпращането на невалидни данни към базата (има два варианта: или ще бъдат записани, или базата ще хвърли грешка, като и двата варианта са силно нежелателни).

 

Накратко:

1. Валидация на фронт-енда - препоръчителна, но не задължителна

2. Валидация на binding модела в контролера - силно препоръчителна

3. Валидация на binding модела в сервиза - задължителна

4. Валидация на ентитито - силно препоръчителна

 

1
02/03/2019 00:16:43
sasitamil avatar sasitamil 2 Точки

EmployeeFormValidator is the validator implementation that is specific to Spring Framework. supports() method implementation by Spring Framework to know objects on which this validation can be used. ... Spring provides org.springframework.validation.ValidationUtils utility class for basic validations such as null or empty.

rpa online training|data science with python online training

0
Struthers avatar Struthers 1 Точки

We take a brief look at data validation in the Java ecosystem in general and the Spring Framework specifically. The Java platform has been the de facto standard for implementing data validation that is Bean Validation specification MyPrepaidCenter

0
01/06/2020 14:31:31