浏览 1755 次
锁定老帖子 主题:数组类型的转换
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-06
最后修改:2009-06-06
第一种方式: <s:form action="MyAction1"> <s:textfield name="ages" label="Ages"/> <s:textfield name="ages" label="Ages"/> <s:textfield name="ages" label="Ages"/> <s:submit/> </s:form> 第二种方式: <s:form action="MyAction2"> <s:textfield name="ages[0]" label="Ages"/> <s:textfield name="ages[1]" label="Ages"/> <s:textfield name="ages[2]" label="Ages"/> <s:submit/> </s:form> 以上这两种方式都是可以的,但是他们有什么区别呢?让我们看看它们Action的实现就知道了。 MyAction1实现: pulbic class MyAction1 { private Double[] ages; public void setAges(Double[] ages) { this.ages = ages; } public Double[] getAges() { return ages; } } MyAction2的实现: pulbic class MyAction2 { private Double[] ages = new Double[]{}; public void setAges(Double[] ages) { this.ages = ages; } public Double[] getAges() { return ages; } } 大家从上面看到,区别就是,MyAction1的ages没有进行初始化,而MyAction2的ages进行了初始化了。那这是为什么呢? 这是因为ONGL表达式在第一种情况下针对的是数组对象本身,Struts2在处理过程中,暂时新建了一个数组对象,直接赋值给ages,所以ages不需要进行初始化。而在第二中方式中,ONGL表达式针对的是数组的元素,不是数组本身了,所以必须要对数组进行初始化的。 这是我在学习过程中的一点总结,希望对初学者有所帮助! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |