1.sruts2用什么来代替struts1中的formBean呢?其实在我们调用action中的excute方法之前,struts2的拦截器,已经帮我们调用action中属性的setter方法,给属性都设值了,所以在excute方法中,我们可以直接调用属性值.而我们在jsp中的ul表达式显示属性,那就得归功于action中属性的getter方法了.
关于复合类型的getter和setter方法,我们并不需要关注,因为struts2帮我们都弄好了,比如,按顺序下面3步:
1)我们的提交页面: <input type="text" name="product.id"/>
2)那么我们的action中属性只有product的get和set方法.
3)还有我们的转向页面: ${product.id}
看懂了吧!呵呵,当然你得先有Product这个实体存在.因为这里用了反射,先生称Product对象,然后给product类里的属性设值.
2.顺便说下struts2的2.1.6版本的bug问题,建议大家使用2.1.6以上的版本.
3.类型转换器---转换器有2个作用,一是,参数提交时,把提交上来的参数转化成我们需要的类型,然后我们在excute方法中直接使用; 二是,我们在view层用el表达式显示的属性的时候,用来回显,可以把我们使用的类型转化成字符串型.见下图,我们自定义的转换日期的转换器:
定义我们的转换器为局部转换器:
我们的局部转换器的properties文件里内容是什么呢,如下:
"action中的属性名=自定义转换器的路径",见下图示例:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
定义我们的转换器为全局转换器,做如下的事:
1)在根目录下建立xwork-conversion.xml
2)xwork-conversion.xml内容就不是要对什么属性应用哪个转换器了,变成我们要对什么类型用用哪个转换器了.示例:
而后只要是action中的属性有需要转换类型的,对应上全局转换器就会被自动转换
当然局部转换与全局转换器,有局部优先原则.这点我就不解释了!
4.
重要!访问或添加application/request/session属性,如下图:
有了上图,我想大家都明白了struts2如何访问我们的scope的!
当然如果大家想要直接获得request,response对象的话,可以这样做,同样见图片:
,也许这样直接获得request等属性,有些人更喜欢!