这个概念是我们可以在没有 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。 我尝试将其放入构造函数中,但这不起作用。如果这是错误的,任何人都可以帮助我找到解决方案/更好的替代方案。
最佳答案
这是一个由两部分组成的答案。 当我们尝试刷新 RequestMapping 中的上下文时,我发现了一个包含问题的部分。然而,这不是真正的解决方案。真正的解决方案是声明一个我仍然需要处理的 WebApplicationInitializer。
我离题了。
解决方案:
将 AnnotationConfigApplicationContext 替换为 AnnotationConfigWebApplicationContext,这样上面的代码就可以正常工作。
但建议花更多时间并了解 WebApplicationInitializer 从长远来看是如何实现的
关于java - Spring MVC 和应用程序上下文多次刷新尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313368/