Мое требование состоит в том, что я хочу, чтобы проверка в поле формы im выполнялась с использованием класса весового валидатора и регулярного выражения, так что я делаю здесь, я проверяю свое поле DepartmentName
, которое находится в String. нет числового значения где угодно. Эта проверка im выполняется с использованием выражения regex [0-9]
, потому что если он содержит любое числовое значение, то matcher.find()
возвращает true, если он возвращает true. Я бросаю сообщение об ошибке. Так что проблема в том, что когда я предоставляю строку с не числовым значением, проверка выполняется если im предоставляет чистую строку, то все равно ее бросает одно и то же сообщение, если я снова запустил приложение с предоставлением чистого значения String, а затем его работу, но если я снова предоставляю неправильную запись, выполняется проверка, но после этого, если m обеспечивает правильную запись тем же сообщение броска так каждый раз, когда мне нужно, чтобы запустить мое приложение, пожалуйста, решить эту проблемуПроблема с валидацией с использованием regex на классе валидатора весны
вот мой валидатор класс
package com.ankur.tutorial.validator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import com.nousinfo.tutorial.service.model.DepartmentBO;
public class DepartmentValidator implements Validator {
boolean found = false;
public boolean supports(Class<?> arg0) {
return DepartmentBO.class.isAssignableFrom(arg0);
}
public void validate(Object object, Errors errors) {
DepartmentBO departmentBO = (DepartmentBO) (object);
System.out.println(departmentBO.getDepartmentName());
if (departmentBO.getDepartmentName().equals("")) {
errors.rejectValue("departmentName", "department.Name");
} else {
Pattern pattern = Pattern.compile("[0-9]");
Matcher matcher = pattern.matcher(departmentBO.getDepartmentName());
while (matcher.find()) {
found = true;
}
System.out.println(found);
if (found) {
errors.rejectValue("departmentName", "department.string");
}
}
}
}
это мой контроллер
package com.nousinfo.tutorial.controllers;
import java.util.Map;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.nousinfo.tutorial.model.DepartmentForm;
import com.nousinfo.tutorial.service.impl.DepartmentServiceImpl;
import com.nousinfo.tutorial.service.model.DepartmentBO;
import com.nousinfo.tutorial.validator.DepartmentValidator;
@Controller
@RequestMapping("departmentController")
public class DepartmentController {
private DepartmentServiceImpl departmentServiceImpl;
private DepartmentValidator departmentValidator;
public DepartmentServiceImpl getDepartmentServiceImpl() {
return departmentServiceImpl;
}
public void setDepartmentServiceImpl(
DepartmentServiceImpl departmentServiceImpl) {
this.departmentServiceImpl = departmentServiceImpl;
}
public DepartmentValidator getDepartmentValidator() {
return departmentValidator;
}
public void setDepartmentValidator(DepartmentValidator departmentValidator) {
this.departmentValidator = departmentValidator;
}
/**
* Set to set the view
*
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value = "/departmentForm", method = RequestMethod.GET)
public String view(Model model) throws Exception {
DepartmentBO departmentBO = new DepartmentBO();
model.addAttribute("departmentBO", departmentBO);
return "departmentForm";
}
/**
* Create the department
*
* @param departmentForm
* @param bindingResult
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value = "/createDepartment", method = RequestMethod.POST)
public ModelAndView createEmployee(
@ModelAttribute("departmentBO") DepartmentBO departmentBO,
BindingResult bindingResult) throws Exception {
ModelAndView modelAndView = new ModelAndView();
departmentValidator.validate(departmentBO, bindingResult);
if (bindingResult.hasErrors()) {
modelAndView.setViewName("departmentForm");
return modelAndView;
}
modelAndView.addObject("departmentBO", departmentBO);
if (departmentBO.getUpdateStatus() == 'A') {
boolean flag = departmentServiceImpl.actionDecider(departmentBO);
if (flag == false)
modelAndView.setViewName("DBError");
else
modelAndView.setViewName("Success");
}
return modelAndView;
}
спасибо, что его работа – henrycharles
еще одна вещь, я просто подтверждаю, что по умолчанию весь весенний класс является singeleton до тех пор, пока мы не изменим область действия в xml-файле, я прав? – henrycharles
Да. Весенние бобы по умолчанию являются одиночными. – gouki