gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:00:43 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com