我是Spring的新手。我正在开发一个MVC应用程序,其工作方式如下:
1)用户使用创建与某些服务的连接所必需的数据填写表单
2)控制器从输入中获取数据,创建新对象serviceManager并保存此对象,例如在某些带有serviceId的HashMap中
3)下次用户想要使用此服务时,使用serviceId的控制器从HashMap读取数据。
所以我只需要在整个会话中将这个HashMap存储在我的控制器中以备将来使用。实现这一目标的最佳方法是什么?也许每次创建serviceManager对象并从数据库中读取数据是正确的解决方案?在我的控制器中,我已经使用完全符合目的的@Autowired字段,但它们是在spring xml中定义的,我必须动态存储数据。
答案 0 :(得分:0)
似乎你的要求与我的一样,我应该保留会话中的主要数据,每次从客户端获取详细数据并组合2种数据从数据库中检索某些东西。我只是将主要部分数据放在会话中,然后在整个会话中我可以得到它。我也尝试使用@SessionAttribute,但经过几十次尝试后,我放弃了,它有很多问题。所以,如果可以,我只是建议您将数据存储在会话中,这是最简单的方式。
答案 1 :(得分:-1)
我很自豪,但就此而言:
@Controller
@SessionAttributes({"myObject"})
public class MyController() {
...
@RequestMapping(value="/foo")
// Corrected as per Costi below
// public String someMethod(@PathVariable MyObject myObject) {
public String someMethod(@ModelAttribute MyObject myObject) {
...
}
}
@SessionAttributes会将一个名为myObject的MyObject放入会话中,如果它尚未存在,并且@PathVariable将其拉下来,以便您可以在该方法中使用它。
会话属性中的卷曲对于一个属性不是必需的,但是,当您使用数组表示法时,您可以指定多个逗号分隔(也就是说:卷曲)