struts2 标签 tag

一.Struts2标签使用实例。
S标签中用#可以取出堆栈上下文中的存放的对象.
用%{}可以取出存在值堆栈中的Action对象,直接调用它的方法.例如你的Action如果继承了ActionSupport .那么在页面标签中,用%{getText('key')}的方式可以拿出国际化信息. %{#}, 这是JSP2.1最新规范中的语法,是Struts2为其解决兼容性问题而写成%{#}
在域对象中使用%{#}
比如%{#session.user.userName}
将获得user对象的 userName属性值



(1)<s:property>
1.访问Action值栈中的普通属性:<s:property value="attrName"/>
2,访问Action值栈中的对象属性(要有get set方法):
<s:property value="obj.attrName"/>
<s:property value="obj1.obj2.attrName"/>
3,访问值栈中对象属性的方法
<s:property value="obj.methodName()"/>
4,访问值栈中action的普通方法:
<s:property value="methodName()"/>
5,访问静态方法:
<s:property value="@com.softeem.LoginAction@methodName()"/>
6,访问静态属性:
配置属性文件,允许ognl访问静态方法struts.ognl.allow...=true
<s:property value="@com.softeem.LoginAction@attrName"/>
7,访问Math类的静态方法:
<s:property value="@@min(9,7)"/>
8,访问普通类的构造方法:
<s:property value="new com.softeem.User(2)"/>
9,访问集合:
①list集合对象
<s:property value="listName"/>
②list集合中的某个元素
<s:property value="listName[1]"/>
③list中某个属性的集合
<s:property value="listName.{field}"/>
④list中某个属性集合的特定值
<s:property value="listName.{field}[0]"/>
⑤访问set
<s:property value="setName"/>
⑥访问set中某个元素
<s:property value="setName[0]"/>
⑦访问map
<s:property value="mapName"/>
⑧根据key访问Map中的元素
<s:property value="mapName.username"/>
<s:property value="mapName['username']"/>
<s:property value="mapName[/"username/"]"/>
⑨访问map中所有的key
<s:property value="mapName.keys"/>
10,访问map中所有的values
<s:property value="mapName.values"/>
11,访问map的大小
<s:property value="mapName.size()"/>
12,投影
<s:property value="listName.{?#this.age==1}"/>
<s:property value="listName.{^#this.age>1}"/>
<s:property value="listName.{$#this.age==1}"/>
<s:property value="listName.{$#this.age==1}.{age}==null"/>
<s:property value="[0]"/>值栈中的对象
13.session
<s:property value="#session.user.userName"/>
(2)<S:if>
字符串N一定要用“”双引号包含,从test的包含则用单引号 ‘ ’,如果相反,则不能正确判断该属性是否与该字符串相等
正确:
<s:if test='activityBean.searchForce=="N" '>
错误:
<s:if test="activityBean.searchForce=='N' ">
单引号表示char类型

(3)<s:iterator>

<s:iterator value="menus" id="pm">
<s:if test="#pm.menu == null" >
父目录:<s:property value="#pm.menuName" />
<s:iterator value="menus" id="cm">
<s:if test="#cm.menu!= null">
    <s:property value="#cm.menu.menuId"/>
<s:if test="#cm.menu.menuId==#pm.menuId">
子目录:<s:property value="#cm.menuName" />
</s:if>
</s:if>
</s:iterator>
</s:if>

</s:iterator>
(4)<s:select>
   1.硬编码
   <s:select label="最高学历" name="education"
                        list="{'高中','大学','硕士','博士'}" />
   <s:select label="最高学历" name="education"
list="#{1:'高中',2:'大学',3:'硕士',4:'博士'}"/>
  2.参数

使用listKey和listValue属性,利用Action实例的属性(property)来设置选项的值和选项的内容   listKey 属性list中对象的id,  当表单提交时,提交的值。listValue是下拉框的显示值。Value 表示 与listkey所相等值所对应的listvalue值 显示在单选框中。headerKey:表示默认的所对应的option 的 value值,headerValue,单选框默认显示值
Empty:是否默认显示值为空。

<s:select name="purchaseCompanyId"
list="listPurchaseCompanys" listKey="purchaseCompanyId"
listValue="purchaseCompanyName" headerKey="-1"
headerValue="--请选择供货公司--"   empty=”false”>
</s:select>

(5)<s:checkboxl> 复选框
硬编码 加回显
  标签中 属性value="true"表示选中,fieldValue="Y" 表示这个checkbox的值是"Y"
  注意的是<s:checkbox>标签没有readonly属性,虽然有disabled属性,但是如果设置disabled=true,则无法获得<s:checkbox>标签的值,
为了实现既不能编辑<s:checkbox>标签有要可以获得<s:checkbox>标签的值,可以加上: onclick="return false",
  <s:checkbox name="stopRmk" value="true" fieldValue="Y"/>
<s:checkbox name="stopRmk" value="true" fieldValue="Y" onclick="return false"/>

<input type="checkbox" name="param.failReason"
<s:if test="customerTrade.failReason.contains('客户')">checked="checked"</s:if>
value="客户" />
<input type="checkbox" name="param.failReason"
<s:if test="customerTrade.failReason.contains('网页')">checked="checked"</s:if>
value="网页 " />
(6)复选框 参数 <s:checkboxlist>
<s:checkboxlist name="chostypes" list="#request.allTypeList" listKey="id"     
          listValue="msgtypename"value="#request.chooseTypeList">
</s:checkboxlist>
name 属性不可少,你可以自己取名字。
        list  所有的角色(数据库中的存在的所有角色,值为一个list)
        listKey 和 listValue 对应的值是一个bean中的值,并有相应的get和set方法。
        listKey 是所有角色中的 ID属性
        listValue 就是角色的名称
        value 中的值是选中的角色(必须是一个list,并且保存的是字符串,即使是id属性也要转化为字符串)
(7)<s:radio>
  1.硬编码
<1><s:radio name="sss"  list="{'赔偿','不赔偿'}" 
<s:if test="sss.contains('赔偿')">checked="checked"</s:if> ></s:radio>
<2><s:radio name="sss"  list="#{1:'赔偿',2:'不赔偿'}"  value=”与list相对应 数值”>
           </s:radio>

  2.参数
   <s:radio name="'param.assignCsmgrId'" value="customerTrade.assignCsmgrId" 
list="customerTradeManagerList" listKey="userId" listValue="userName" ></s:radio>

你可能感兴趣的:(struts2)