java - 表单验证错误后的Spring MVC(既不是BindingResult也不是bean名称的普通目标对象)

标签 java spring jsp spring-mvc

我遇到了一个模型属性问题,它似乎在表单验证后“消失”了:

public class QuestionController {
    //...
    @RequestMapping(value="/get", method=RequestMethod.GET)
    public String prepareVoterBean(Model model, @RequestParam String voterID) {
        ...
        VoterBean questions = service.getQuestionBean(voterID);
        model.addAttribute("questions", questions);
        return "questionPage";
    }

    @RequestMapping(method=RequestMethod.POST)
    public String processSubmit(@Valid VoterBean questions, BindingResult result) {
        if (result.hasErrors()) {
            logger.info("QuestionController encountered form errors ");
            return "questionPage";
        }
        return "redirect:/ballot/get";
       }

以下是 questionPage.jsp,其中 BindingResult 和 bean 名称('questions')的普通目标对象均未出现:

<form:form modelAttribute="questions" method="post">
    <fieldset>      
        <legend>Security Questions</legend>
        <p>
            <form:label for="birthDate" path="birthDate" cssErrorClass="error"> <fmt:message key="questions.birthDate"/>: </form:label></br>
            <form:input path="birthDate" /><form:errors path="birthDate"/>
        </p>
        //...

questionPage 使用 HTTP get 请求呈现得很好,但是当我提交带有验证错误的表单,从而触发 processSubmit() 返回到 questionPage 时,我遇到了 BindingResult 错误。我对我做错了什么感到非常困惑,因为我质疑 bean 在第一次返回时必须已提供给 questionPage,但是在 HTTP POST 请求出现验证错误后页面突然找不到 bean .非常感谢您的帮助。谢谢。

最佳答案

如果您希望 bean 自动神奇地回到 map 上,您需要通过注释方法参数告诉 Spring 使用 map 中的一个 bean 作为绑定(bind)目标:

@RequestMapping(method=RequestMethod.POST)
public String processSubmit(@Valid @ModelAttribute("questions") VoterBean questions, BindingResult result) {
    if (result.hasErrors()) {
        logger.info("QuestionController encountered form errors ");
        return "questionPage";
    }
    return "redirect:/ballot/get";
   }

关于java - 表单验证错误后的Spring MVC(既不是BindingResult也不是bean名称的普通目标对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15795097/

相关文章:

java - 速度模板渲染的 urlrewritefilter 问题

java - 使用 REST API 实现属性/字段级安全

java - 如何使用 Jpa 存储库实现轻型实体版本?

java - Spring+Hibernate调试 "Injection of autowired dependencies failed"错误

java - 启动 Apache Tomcat 7 时指定 JRE/JDK

java - Android 多媒体服务 - 简单问题

Java servlet : How to detect (on Server Side) if JavaScript (on Client Side) has beeen tampered with?

类文件中的 Java 条件(在字节码级别)

java - 使用 Ajax 启用后退按钮

java - Web应用程序的执行流程?