如何在Spring MVC项目中将对象的实例作为会话属性?

时间:2016-05-02 09:44:57

标签: spring spring-mvc spring-annotations

我正在开发一个Spring MVC应用程序,我遇到了以下问题。

我有 RegistrazioneInfo 类,其中包含用户在表单中插入的一些信息:

public class RegistrazioneInfo {

    @NotNull
    @Size(min=16, max=16)
    private String codiceFiscale;

    String gRecaptchaResponse;

    public String getCodiceFiscale() {
        return codiceFiscale;
    }

    public void setCodiceFiscale(String codiceFiscale) {
        this.codiceFiscale = codiceFiscale;
    }

    public String getgRecaptchaResponse() {
        return gRecaptchaResponse;
    }

    public void setgRecaptchaResponse(String gRecaptchaResponse) {
        this.gRecaptchaResponse = gRecaptchaResponse;
    }


}

然后我有这个控制器类:

@Controller
public class RegistrazioneController extends BaseController {

    private RegistrazioneInfo registrazioneInfo;

    ...............................................
    ...............................................
    ...............................................
}

包含一些处理某些资源请求的方法。

好的,我的问题是我想通过使用 @SessionAttributes Spring注释将以前的 RegistrazioneInfo 类的实例用作会话属性,如下所示: http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-sessionattrib

我的问题是,在前面的例子中做了类似的事情:

@SessionAttributes("pet")
public class EditPetForm {
    // ...
}

究竟什么是宠物?我认为它类似于id,它标识必须用作会话属性的对象或类似的东西。如何将我的 RegistrazioneInfo 的实例作为会话属性?

2 个答案:

答案 0 :(得分:1)

@SessionAttributes在Controller类(@Controller)中声明,所以在类级别。 Pet是一个持久存在于HttpSession中的Bean对象

答案 1 :(得分:0)

来自documentation

  

这通常会列出模型属性的名称,它应该透明地存储在会话或某些会话存储中,作为表单支持bean。在类型级别声明,应用于带注释的处理程序类操作的模型属性。

(重点是我的)

另请注意,如文档中所示,您不应将其用于"非临时"元件。