spring - Spring标签表单在jsp中不显示验证错误
问题描述
我正在写一个带有用户注册的页面。面临验证错误形式的显示问题
我的控制器:
@Controller
public class UIController {
private final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private UserService service;
@Autowired
private SecurityService securityService;
@Autowired
private UserValidator validator;
@PostMapping(value = "/login")
public String signIn(@ModelAttribute("userForm") UserTo userForm, BindingResult bindingResult, Model model) {
validator.validate(userForm, bindingResult);
User user = service.findByLogin(UserUtil.createNewFromTo(userForm).getLogin());
if (!userForm.getPassword().equals(user.getPassword())) {
log.info("invalid password {}", user);
return "redirect:/login";
}
log.info("signIn {}", user);
securityService.autologin(user.getLogin(), user.getPassword());
return "redirect:/welcome";
}
}
我的验证器:
@Component
public class UserValidator implements Validator {
@Autowired
private UserRepositoryImpl userRepository;
@Override
public boolean supports(Class<?> aClass) {
return UserTo.class.equals(aClass);
}
@Override
public void validate(Object o, Errors errors) {
UserTo user = (UserTo) o;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "login", "NotEmpty");
if (user.getLogin().length() < 6 || user.getLogin().length() > 32) {
errors.rejectValue("login", "Size.userForm.login");
}
if (userRepository.findByLogin(user.getLogin()) != null) {
errors.rejectValue("login", "Duplicate.userForm.login");
}
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "NotEmpty");
if (user.getPassword().length() < 8 || user.getPassword().length() > 32) {
errors.rejectValue("password", "Size.userForm.password");
}
}
}
我的jsp表单:
<div id="wrapper">
<!--SLIDE-IN ICONS-->
<div class="user-icon"></div>
<div class="pass-icon"></div>
<!--END SLIDE-IN ICONS-->
<!--LOGIN FORM-->
<form:form name="login-form" modelAttribute="userForm" class="login-form" method="post" id="form">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<!--CONTENT-->
<div class="content">
<!--USERNAME-->
<spring:bind path="login">
<div class="form-group ${status.error ? 'has-error' : ''}">
<form:input name="login" id="login" type="text" path="login" class="input username"
placeholder="Login"></form:input>
<form:errors path="login"></form:errors>
</div>
</spring:bind>
<!--END USERNAME-->
</div>
<!--END CONTENT-->
<!--FOOTER-->
<div class="footer">
<button class="button" type="submit">Login</button>
<button class="register" type="button" name="submit" onclick=" register_url('${contextPath}/registration')">
Register
</button>
</div>
<!--END FOOTER-->
</form:form>
</div>
发送 POST 请求时在 chrome 中调试时,出现 302 HTTP 错误。因此,如果我在控制器中设置断点,则不会处理调试。
告诉我可能是什么问题?
解决方案
jsp 中的“form”标签没有“action”属性。
推荐阅读
- c# - 从 RowSelected 事件更改 ViewController/触发 Segue - Xamarin
- kubernetes - ActiveMQ Artemis 消费者在崩溃后没有重新连接到同一个集群节点
- python - 在 Python3 中修复 TypeError 后会出现另一种 TypeError
- java - Java 运行方法每 30 秒一分钟
- python - 点刻字的图像处理
- android - Flutter - Drawer:如果存在则显示现有页面,而不是新实例
- spring-boot - Spring-Boot WebClient block() 方法返回错误 java.lang.IllegalStateException
- r - 在两个时间段之间对 R 中的数据进行分类
- websocket - 是否可以通过 NestJS 路由第三方 web-socket 地址
- python - pymongo 查询包含唯一标识符的所有项目