Я выполняю поиск по критерию с помощью объекта DTO для фильтра во внешней части моего приложения:
public class MyFilter implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
@Enumerated(EnumType.STRING)
private AccessType accessType;
private List<MyType> userType;
private List<OfficeLocation> officeLocation;
private List<Language> languages;
private String country;
}
и геттеры и сеттеры.
В моем контроллере :
@RequestMapping
public ModelAndView list(@ModelAttribute("filter") MyFilter myFilter, BindingResult result) {
final ModelAndView mav = new ModelAndView("list");
// validate
MyFilterValidator.validate(myFilter, result);
mav.addObject("filter", myFilter);
if (result.hasErrors()) {
return mav;
}
// ...
return mav;
}
Я хочу проверить фильтр формы поиска по классу проверки :
открытый класс MyFilterValidator реализует org.springframework.validation.Validator {
@Override
public void validate(Object object, Errors errors) {
final MyFilter myFilter = (MyFilter) object;
if (myFilter == null) {
errors.reject("error.one.field.required");
} else {
if (StringUtils.isEmpty(myFilter.getName()) && myFilter.getAccessType() == null
&& myFilter.getUserType() == null && myFilter.getLanguages() == null
&& StringUtils.isEmpty(myFilter.getCountry())
&& myFilter.getOfficeLocation() == null) {
errors.reject("error.one.field.required");
}
}
}
@Override
public boolean supports(Class inClass) {
return MyFilter.class.equals(inClass);
}
}
Мне нужно проверить, заполнено ли одно поле, заполнено минимум одно поле моего класса Filter. Как я могу сделать это простым способом?
Мне нужно проверить каждый атрибут: StringUtils.isEmpty или .size () <= 0, ...?
Можно ли перебрать каждое свойство и проверить, не является ли одно из них нулевым?
Чтобы узнать, заполнено ли одно поле? </p>