gpt4 book ai didi

java - Spring 2.5 表单验证 - 如果调用 validator ,动态数据会丢失吗?

转载 作者:行者123 更新时间:2023-12-01 16:09:53 25 4
gpt4 key购买 nike

我有一个简单的表单,其中有一个由数据库填充的选择框。触发验证时,选择框为空。我是 Spring 的新手,我似乎错过了一些东西。

有什么帮助值得赞赏吗?提前致谢。

在站点下面的 Controller 中是动态内容。

@RequestMapping("/registration/registration.html")
public ModelMap setupRegistrationForm(HttpServletRequest request, RegistrationForm form) {
ModelMap map = new ModelMap();
I18NSite[] sites = new Sites().getSites();
map.put("sites", sites);
return map;
}

@RequestMapping(value="/registration/registration.html", method = RequestMethod.POST)
public String saveRegistrationForm(HttpServletRequest request,RegistrationForm form, BindingResult errors) {
I18NSite site = Sites.getSite();
RegistrationFormValidator validator = new RegistrationFormValidator();
validator.setDataSource(site.getDataSource());
validator.validate(form,errors);

if (errors.hasErrors()) {
return "registration/registration";
} else {
// other code
}

return "redirect:/index.html";
}

最佳答案

不确定这是否有帮助,但是您是否尝试过使用 @ModelAttribute 注释来公开引用数据,即构建选择框的数据?这应该类似于以下代码片段:

@ModelAttribute("countries")
public List getAllCountries() {
return geoService.getAllCountries();
}

或者根据您的情况:

@ModelAttribute("sites")
public List getSites() {
I18NSite[] sites = new Sites().getSites();
return Arrays.asList(sites);
}

还有一个非常重要的问题,我花了很长时间才弄清楚:

请记住,您的“支持 bean”(绑定(bind)到注册表单表单字段的 pojo)应该存在更长时间!不仅仅是一个请求的持续时间。它,这意味着永远!同一个实例应该存在,直到调用另一个 Spring mvc Controller 。因此,RegistrationForm 实例不仅在表单设置并显示之后就存在 - 当提交 POST 请求并且 Spring 用表单数据填充 RegistrationForm 实例时,它应该仍然存在。您可以通过以下类级别注释来实现此目的:

// Example for your case... 
@Controller
@SessionAttributes("registrationForm")
public class RegistrationController {
...
}

I was googling around for this one for days (REALLY!) - so I really recommend to read this blog entry I found sometime ago. It helped me out of all that Spring MVC documentation hell ;-)

希望这有帮助;-)

关于java - Spring 2.5 表单验证 - 如果调用 validator ,动态数据会丢失吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652405/

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