日期:2014-05-17  浏览次数:20701 次

struts2标签相关的问题?
action中有两个变量
List<Person> listPerson;
String name;

Peson类
String name;
.....

jsp页面中是这样的:
循环listPerson
<s:iterator list='listPerson'>
<s:property value="name">
</s:iterator>
如上,
1.请问以上的结果是什么?是action中的name蛮量还是person中的name变量
2.在循环中如何对两者进行比较呢?比如action中name='张三',在循环中如果名字等于action中name的打印出来
请高手解答!!!
------解决方案--------------------
1.<s:iterator list='listPerson'>写错了,应该是<s:iterator value='listPerson'>。你Action的两个变量没有访问修饰符,访问不到。

2.<s:iterator value='listPerson'>会在值栈中(当前的Action)找名为listPerson的集合然后遍历。

3.你写在<s:iterator/>标签里的<s:property value="name">,struts会在你循环的每一个对象中找name属性,如果有,则取值显示。

总结:<s:property value="name">你写在<s:iterator/>标签内,也就是说<s:property value="name">是基于循环对象的,二者不存在比较的逻辑,是从属的关系,先有的你迭代的集合,然后再迭代的同时才看每一个对象有没有name这个属性,有则输出,无则不显示,仅此而已。概念混乱,复习基础。