日期:2014-05-20  浏览次数:20633 次

[200分]求struts2中s:set到底怎样用 id ,name, scope ,value分别拜师什么意思??急
<s:set id="att" name="att">default</s:set>
<s:set id="att" name="att" scope="request" >request</s:set>
<s:set id="att" name="att" scope="session" >session</s:set>
<s:set id="att" name="att" scope="application" >application</s:set>
  s:set标签到底什么作用,其中的id name scope value分别表示什么意思??
  
  set设定的值我用<s:property value="att"/>取出的是Action的实例
  哪个大侠能详细说一下吗??
  如果可以立即揭贴!

------解决方案--------------------
<s:set>是将某个值绑定到一个变量的标签.有点类似于从另外一个地方拿值,赋于一个新的变量,并把它存在某个作用域中,可以是requset,session,application, page,action中。
id 表示 为这个引用的元素赋一个id值,就象为页面中的表单form增加一个id.
name 表示 变量名.
scope 表示 这个变量存在哪个作用域.
value 表示 这个变量的值,可以从其他地方拿.
------解决方案--------------------
简单点说,就如用JSP的内置对象(session.setAttribute("att","ssss"))设置属性值一样.
id:对相对象的引用
name:相当于att
scope:想当于当前的属性为session的作用域,当然也可以为pagecontext,request,application;

------解决方案--------------------
set标签是将某个值放到指定范围内, 比如说 student.teacher.parent.age 每次访问这个属性不仅性能低,而且代码可读性很差,为了解决这个问题,可以将这个值设置为一个新值,并且放入指定范围内
name 是必填属性,是重新生成的新变量的名字
scope 可选属性,指定新变量被放置的范围,可以接受application,session,request,page,action 这5个值 没有指定默认是Stack Context中
value 可选属性,指定变量的值 如果没有指定,使用ValueStack栈顶的值赋给新变量
id 可选属性,指定新元素的引用ID

下面是个例子:

<!-- 使用bean标签定义一个javaBean实例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
将p放入默认范围内
<s:set value="#p" name="test"/>
<s:property value="#test.name"/><br>
<s:property value="#test.age"/><br>
将p放入application范围内。
<s:set value="#p" name="test" scope="application"/>
<s:property value="#attr.test.name"/><br>
<s:property value="#attr.test.age"/><br>
将p放入session范围内。
<s:set value="#p" name="test" scope="session"/>
${sessionScope.test.name}<br>
${sessionScope.test.age}<br>