我们可以在没有XML文件的情况下创建一个spring应用程序,所以请使用java配置文件指向一些解决方案
我正在创建一个示例web mvc应用程序作为概念证明我遇到问题,一旦表单提交,我就无法再使用表单提交。它给出了这个错误
GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once
我可以看到我的问题在哪里,但我似乎无法找到解决方法
Controller.java
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
//@TODO hibernate broke validity
//@TODO disable submit until data is valid
@RequestMapping(value="form", method=RequestMethod.POST)
public String submitForm(@ModelAttribute @Valid Subscriber subscriber,BindingResult result, Model m) {
m.addAttribute("message", "Successfully saved person: " + subscriber.toString());
ctx.register(WebConfiguration.class);
//@TODO fix refresher only once issue
ctx.refresh();
SubscriberDao sao = ctx.getBean(SubscriberDao.class);
sao.savePerson(subscriber);
return "formPage";
}
如果你看这里,每次我去URL时都会调用ctx.refresh。 我尝试将它放在构造函数中,但是没有用。如果这是错误的话,任何人都可以帮我找到解决方案/更好的选择。
答案 0 :(得分:0)
这是一个2部分答案。 当我们尝试在RequestMapping中刷新上下文时,我发现了一个包含问题的部分。然而,这不是真正的解决方案。真正的解决方案是声明我仍然需要处理的WebApplicationInitializer。
我离题了。解决方案:
使用AnnotationConfigWebApplicationContext替换AnnotationConfigApplicationContext,这应该可以使上述代码正常工作。
但建议花更多时间并了解WebApplicationInitializer如何长期实施