struts2--struts2标签库(部分)

来源:互联网 发布:金鼎娱乐源码下载 编辑:程序博客网 时间:2024/05/19 20:21

一:非UI标签:

  一)控制标签

   a、sort标签:用于对指定的集合进行排序。包含两个属性source:指定集合;comparator:用于进行排序的Comparator实例,为必填属性(使用该标签时,生成的子集放在ValueStack栈顶,如果sort标签结束,则该标签生成的子集将从ValueStack中移除)

sort标签对集合进行排序时,需要自定义一个Comparator类,自定义的Comparator类需要实现java.util.Comparator接口,并实现该接口的compare()方法。

案例:自定义类:MyComparator:

package com.Comparator;import java.util.Comparator;public class MyComparator implements Comparator{@Overridepublic int compare(Object obj1, Object obj2) {String s1 = (String)obj1;String s2 = (String)obj2;//=0表明相等,>表明s1大于s2,否则想反return s1.length() - s2.length();}}
jsp页面:

  <body>    <s:set value = "{'abc','yesy','12354','iloveyou','no'}" name = "newList"/>    <s:bean id = "mycomparator" name = "com.Comparator.MyComparator"/><!-- 实例化 -->    <s:sort comparator="mycomparator" source = "newList">      <s:iterator status = "ss">        <s:property value = "#ss.getIndex()"/>:        <s:property/><br>      </s:iterator>    </s:sort>  </body>

排序结果:




         二)数据标签

       a、action:

  使用action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中. 使用action标签指定属性有: 
id: 可选属性,作为该Action的引用ID    
name:必选属性,指定调用Action    
namespace:可选属性,指定该标签调用Action所属namespace    
executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.    
ignoreContextParam:可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,即传入参数.

案例:Action:

package com.action;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction2 extends ActionSupport {private String username;private String password;public String execute() {return SUCCESS;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
jsp页面:

  <body>      Action执行结果传入本界面:<br>       <s:action name = "login2" executeResult="true" namespace = "/">         <s:param name = "username">ldw</s:param>         <s:param name = "password">123456</s:param>       </s:action><br><br>              Action执行结果传入本界面:<br>       <s:action name="login2" executeResult="true" ignoreContextParams="false" namespace = "/">  <!--ignoreContextParams和子元素param冲突,参数仍传到了action中-->         <s:param name = "username">ldw</s:param>         <s:param name = "password">123456</s:param>       </s:action><br><br>            Action执行结果禁止传入本界面:<br>       <s:action name="login2" executeResult="false" namespace = "/">         <s:param name = "username">ldw</s:param>         <s:param name = "password">123456</s:param>       </s:action>  </body>
结果视图:

  <body>    调用了Action中的execute()方法<br>   用户名: <s:property value = "username"/><br>    密码:<s:property value = "password"/>  </body>

结果:

b、push标签:将某个值压入ValueStack的栈顶,该标签有两个属性(id,value)

  <body>     <s:bean name="com.action.LoginAction2" id = "newUser">       <s:param name = "username">张三</s:param>       <s:param name = "password">123456</s:param>     </s:bean>          <s:push value = "#newUser">        姓名:<s:property value = "username"/><br>        密码:<s:property value = "password"/>     </s:push>  </body>
通过使用push标签将参数值放到ValueStack栈顶后,使用property标签输出参数值时就不需要被包含在bean标签内。当push标签结束时,push标签放入值栈中的对象将被删除。(即要访问push标签压入栈中的对象,需要在标签内部访问)
运行效果:





二、UI标签

        一)表单标签

a、checkboxlist标签:

案列:jsp页面:

  <body>     <s:bean name="com.action.AllDogs" id = "newDog"/>     <s:checkboxlist list="#newDog.getDogs12()" listKey="index" listValue="name" name = "kindlist" label="种类"/><br><br>      <!-- 也可以写成list="#newDog.dogs12",(这是属于ognl的伪属性吗?)-->     <s:checkboxlist list="#{'brown':'棕色','white':'白色','black':'黑色' }" listKey="key" listValue="value" name = "colorlist" label="颜色"/>        <!-- name为必填属性啊!!! -->     <s:debug/>     </body>
AllDogs.java 的java类:

package com.action;import com.Dogs.Dog;public class AllDogs {public Dog[] getDogs12() {return new Dog[] {new Dog("001","雪纳瑞"),new Dog("002","拉布拉多犬"),new Dog("003","藏獒")};}}
javaBean:(Dog.java)

package com.Dogs;public class Dog {  private String index;  private String name;    public Dog() {}    public Dog(String index,String name) {this.index = index;this.name = name;}public String getIndex() {return index;}public void setIndex(String index) {this.index = index;}public String getName() {return name;}public void setName(String name) {this.name = name;}  }
效果:

b、combobox标签:生成一个单行文本框和下拉列表框的组合,其中下拉列表框用于辅助输入,只有单行文本框的值才包含请求参数

jsp页面:

  <body>     <s:form><!-- 没有form标签就无法将从下拉框中选中的值赋给单行文本框,这和它自动生成的js代码有关!!! -->     <s:bean name="com.action.AllDogs" id = "newDog"/>     <s:combobox list="#newDog.dogs12" listKey="name" listValue="name" name = "kindlist" label="选择你喜欢的种类种类" readonly="true"     />     <s:combobox list="{'springmvc','struts2','hibernate'}" name= "colorlist"      label="选择你一项专长" readonly="true"/>     </s:form>     <s:debug/>     </body>
效果:

c、doubleselect标签:生成一个级联菜单(两个下拉列表框)。注意!该标签必须要放在form标签中,且必须指定form标签的name属性(还是和生成的js代码有关)

jsp页面:

  <body>     <s:form name = "form1">       <s:set name = "poetrylist" value = "#{'李白':{'望庐山瀑布','将进酒','把酒问月','赠汪伦'},'杜甫':{'望岳','登楼'}}"/>       <s:doubleselect name = "author" list= "#poetrylist.keySet()"  doubleList="#poetrylist[top]"        doubleName="poertry" labelposition="top"/>     </s:form>     <s:debug/>     </body>

效果:

d、optgroup标签:生成一个下拉列表框的选项组,即在下拉列表框中包含多个选项组,提供分类选择

jsp页面:

  <body>     <s:form name = "form1">       <s:select list="#{'001':'大白鲨','002':'ET','003':'死神来了' }" label = "选择你喜欢的电影">         <s:optgroup list = "#{'004':'飞狐猛将','005':'A计划','006':'飞鹰计划' }" label = "成龙"/>         <s:optgroup list = "#{'007':'黄飞鸿系列','008':'精武英雄','009':'赤子乘龙'}" label = "李连杰"/>       </s:select>     </s:form>     </body>
效果:



 二)非表单标签



三、Ajax标签