如何正确地将SessionAttribute设置为Spring MVC Controller类并检索并将其用于另一个Controller类?

时间:2016-02-01 15:23:31

标签: spring spring-mvc spring-annotations

我是Spring MVC的新手,我有以下问题。

进入名为** HomeController 的类中的 home()控制器方法,我使用服务检索对象。此对象必须作为会话属性放置,以便可以从其他控制器类中的其他方法使用它。

所以我这样做了:

@Controller
@SessionAttributes({"progettoSelezionato"})
@PropertySource("classpath:messages.properties")
public class HomeController {

    private static final Logger logger = Logger.getLogger(LoginController.class);
    private @Autowired HomeService homeService;

    @RequestMapping(value = "/home", method = RequestMethod.GET)
    public String home(Model model) {

        List<Tid023Intervento> listaInterventi = homeService.getListaInterventiRUP(18);

        model.addAttribute("progettoSelezionato", listaInterventi.get(0));

        model.addAttribute("listaProgettiRUP", listaInterventi);//TODO

        return "home";
    }
}

如您所见,我在课程级别使用了这个注释:

@SessionAttributes({"progettoSelezionato"})

然后我把这个对象放在:

model.addAttribute("progettoSelezionato", listaInterventi.get(0));

我不确定这是否正确,因为据我所知,这会将检索到的 listaInterventi.get(0)对象放入模型中,语音为 progettoSelezionato 。所以我绝对不确定它是否被推迟为 SessionAttributes

然后,此对象被推送为 SessionAttriibute 我必须检索并使用if从 gestioneDatiContabiliEnte()方法定义到另一个控制器类,所以我正在做这样:

@Controller
@SessionAttributes({"progettoSelezionato"})
@PropertySource("classpath:messages.properties")
public class GestioneDatiContabiliEnteController {

    private static final Logger logger = Logger.getLogger(LoginController.class);

    @RequestMapping(value = "/gestioneDatiContabiliEnte", method = RequestMethod.GET)
    public String gestioneDatiContabiliEnte(Model model) {

        System.out.println("INTO gestioneDatiContabiliEnte()");
        System.out.println("PROGETTO SELEZIONATO: " + progettoSelezionato);
        return "gestioneDatiContabiliEnte/gestioneDatiContabiliEnte";
    }

}

但似乎无法正常工作,因为Eclipse在这一行上签了我的错误:

System.out.println("PROGETTO SELEZIONATO: " + progettoSelezionato);

错误是: progettoSelezionato无法解析为变量

如何正确地将 listaInterventi.get(0)作为 SessionAttribute 添加到我的 HomeController 中?如何检索并将其用于 GestioneDatiContabiliEnteController 类中定义的 gestioneDatiContabiliEnte()方法?

1 个答案:

答案 0 :(得分:0)

我自己,我可以通过以下方式访问此对象:

model.asMap().get("progettoSelezionato");