ModelDriven
*通过ModelDriven传过来的对象是一个新的对象---举例来说:一个form修改表单(student-学生信息),里面除了学生id、学号不能修改并且在修改表单中没有显示出来,其他的信息都可以进行修改。这时候通过ModelDriven传过来的是一个新的student对象,里面并没有学生id和学号的属性值。并不是自己之前所想象的通过系统后台所获取的当前student表中的对象。
----------------------以上为个人拙见,有错误希望大家提出--------------------------
当Struts2接收到一个.action的请求后,会先建立Action类的对象实例,但并不会调用Action方法,而是
①先将Action类的相应属性放到ValueStack对象的顶层节点(ValueStack对象相当于一个栈)。只是所有的属性值都是默认的值,如String类型的属性值为null,int类型的属性值为0等。处理完上述工作后,
②Struts2就会调用拦截器链中的拦截器,当调用完所有的拦截器后,最后会调用Action类的Action方法,在调用Action方法之前,会将
③ValueStack对象顶层节点中的属性值赋给Action类中相应的属性,注意,在这里就给我们呆了很大的灵活性。也就是说,在Struts2调用拦截器的过程中,可以改变ValueStack对象中属性的值,当改变某个属性之后,Action类的相应属性值就会变成在拦截器中最后改变该属性的这个值。(通过setValue方法可以改变) 。
即是在一个Action中定义了一个全局变量,在一个Action请求中对其进行了赋值,但在另一个对应Action请求中却访问不到该值,除非把该变量定义为静态变量。
--------中钢项目总结
浙公网安备 33010602011771号