#java #spring #validation #spring-mvc
#java #весна #проверка #spring-mvc
Вопрос:
Я новичок в Spring, и мне приходится иметь дело с методом в контроллере Spring, который работает, но я хотел бы несколько улучшить код.
Метод частично реализован в Spring и требуется для проверки того, что пользователь вводит на странице. Это состоит из двух этапов: первый — проверить, что вводимые пользователем данные являются числовыми, а затем проверить базу данных, чтобы убедиться, что пользователь существует для введенного значения.
Метод:
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(@RequestParam("id") String id,
SessionStatus sessionStatus,
Model model) {
Integer personId = null;
try {
personId = Integer.parseInt(id);
}
catch(NumberFormatException e) {
model.addAttribute("message", "Please enter a valid ID.");
sessionStatus.setComplete();
return "errorPage";
}
Person person = null;
person = personService.get(personId);
if (person == null) {
model.addAttribute("message", "Please enter a valid ID.");
sessionStatus.setComplete();
return "errorPage";
}
model.addAttribute("person", person);
sessionStatus.setComplete();
return "userPage";
}
Я хотел бы использовать здесь валидатор Spring, но мне сказали, что они предназначены для проверки формы бизнес-объектов, а не для простой переменной.
Или, если валидатор не может быть использован, могу ли я использовать собственные сообщения Spring для отображения ошибок на странице пользователю?
Итак, у меня было бы что-то вроде этого в форме:
<form:form action="/login" method="get">
<form:input path="id" />
<form:errors path="id" />
<input type="submit" value="Submit">
<input type="Reset" value="Reset">
</form:form>
Кто-нибудь может предложить, как можно улучшить этот метод?
Ответ №1:
Шаги по добавлению проверки.
-
Напишите класс валидатора и реализуйте класс валидатора, предоставив реализацию для метода orerridden
import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class LoginValidator implements Validator{ @override public void validate(Object login, Errors err ){ //Write your logic to follow up your Login validation ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "field.required", "UserName Required field"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required", "Password Required field"); } }
-
Затем создайте запись компонента в * -servlet.xml
-
В JSP добавьте логику ошибок
Спасибо, Паван
Комментарии:
1. Спасибо, Паван. Я уже пробовал это, но безуспешно, и мне было выдано множество сообщений, касающихся того факта, что поле id не было частью JavaBean. Предназначены ли валидаторы только для JavaBeans или нет?