struts2的<property />标签是输出标签
其value属性是指定输出的内容,如果value属性没有写出来,则默认输出对象栈栈顶的元素。
例如,我们在对象栈中添加一个Person对象
Person p=new Person();
p.serName("aaa");
p.serId("1");
ActionContext.getContext.getValueStack().push(p); //把p对象放到对象栈栈顶
在JSP页面要输出p对象里的name属性:
<s:property value="name" />
可以看出如果把一个对象放到对象栈中,我们不用访问其方法,只需直接访问该属性,就像上面要输出p对象里的name属性,value指定的是name而不是p.name
因为把一个对象放到对象栈中,该对象的属性就直接存放在对象栈中了。
如果对象栈中还有另一个名为name的对象,则从栈顶开始向下访问,直到第一次访问到name对象为止。
在开发中要尽量避免同名属性。