Spring标记表单未在jsp中显示验证错误

问题描述 投票:0回答:1

我正在写一个带有用户注册的页面。遇到验证错误形式的显示问题

我的控制器:

@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错误。因此,如果我在控制器中设置了断点,则将不处理调试。

告诉我可能是什么问题?

spring validation spring-mvc jsp
1个回答
0
投票

jsp中的“ form”标签没有“ action”属性。

© www.soinside.com 2019 - 2024. All rights reserved.