Как именно работает метод support() интерфейса Spring Validator?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как именно работает метод support() интерфейса Spring Validator?

Сообщение Anonymous »

Я новичок в Spring MVC, и у меня есть следующие сомнения относительно того, как работает этот пример валидатора:
Итак, у меня есть эта страница search.jsp в где пользователь может искать товар по двум критериям полей (название товара и категория, к которой относится товар):

Код: Выделить всё







Search




Search Products



Name: 



Category:










Search Results:









Итак, в руководстве введены некоторые ограничения на ввод двух полей предыдущего представления, реализующие пользовательский валидатор. В частности, пользователь должен:
  • Пользователь должен вставить название продукта или категорию

    Длина имени должна состоять как минимум из 3 символов.
  • Пользователь может выбирал только по имени или категории, но не по какому-либо другому полю объекта модели Продукт
Для реализации этого пользовательского средства проверки создается класс ProductSearchValidator, реализующий интерфейс Validator Spring:

Код: Выделить всё

package com.packtpub.springmvc.chocolatestore;

import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

import com.packtpub.springmvc.chocolatestore.model.Product;

@Component
public class ProductSearchValidator implements Validator {

@Override
public boolean supports(Class clazz) {
return Product.class.isAssignableFrom(clazz);
}

@Override
public void validate(Object target, Errors errors) {
Product product = (Product) target;
String name = product.getName();
if (!StringUtils.hasLength(name) && (product.getCategory() == null || product.getCategory().getId() == 0)) {
errors.rejectValue("name", "required", "Either name or category is required");
} else if ((product.getCategory() == null || product.getCategory().getId() == 0) && name.trim().length() < 3) {
errors.rejectValue("name", "tooShort", "Please enter at least 3 letters");
}

}

}
Насколько я понимаю, метод supports() говорит, можно ли проверить конкретный экземпляр класса с помощью этого валидатора и validate() реализует конкретную логику проверки.
Хорошо, метод validate() мне довольно ясен (он реализует предыдущие 3 указанных ограничения) .
Я не могу понять, как именно метод supports() работает:

Код: Выделить всё

@Override
public boolean supports(Class clazz) {
return Product.class.isAssignableFrom(clazz);
}
Что представляет собой его входной параметр (Class clazz)? И что представляет собой возвращаемое логическое значение? (в чем смысл оценки Product.class.isAssignableFrom(clazz)?)

Подробнее здесь: https://stackoverflow.com/questions/324 ... rface-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»