zoukankan      html  css  js  c++  java
  • struts2标签库

    struts2标签库 

    文本框输入文字 
    struts2标签是struts2的重点,和action配合使用,就是struts2的重点。第一次使用struts2,就觉得比 jsp/servlet这样的方案,容易多了。 
    在jsp放个input之类的文本框,在servlet中用request.getParameter() 来获取值insert数据库,然后再用request.setAttribute()来给页面返回值。 
    代码量非常可观。但struts2中就方便多了。一般的写法是这样的。写一个JAVA类继承ActionSupport,然后在JSP页面就可以直接使用了。 
    例:<s:textfield name="" label="" /> 

       言归正传,struts2的标签分为UI标签和非UI标签。下面就struts2与html作个对比.在此推荐一个eclipse html插件 
    http://sourceforge.net/project/showfiles.php?group_id=68009 

    文本框: 
       Struts2: 
       <s:textfield name="" label="" /> 
              如果是日期型,可使用<s:date name="Date" format="yyyy-MM-dd" /> 
              由于struts2支持使用el表达式,所以textfield也可写 
              <s:textfield name="Date" label="Date" value={Date} /> 
       HTML: 
              <input type="text" name="textfield1"> 

    列表框: 
    Struts2: 
             固定值: 
              <s:select 
                tooltip="Choose Your Favourite Color" 
                label="Favorite Color" 
                list="{'Red', 'Blue', 'Green'}" 
                name="favoriteColor" 
                emptyOption="true" 
                headerKey="None" 
                headerValue="None"/> 

             动态列表: 
               <s:select 
                tooltip="Choose Your Favourite Language" 
                label="Favourite Language" 
                list="favouriteLanguages" 
                name="favouriteLanguage" 
                listKey="key" 
                listValue="description" 
                emptyOption="true" 
                headerKey="None" 
                headerValue="None"/> 

           注:如果采用动态列表,必须用action访问,如果用JSP访问会报错. 

              list指action中的list、map等集合类, 

              listKey相当于html中的value 

              listValue相当于html中select显示的值 

              emptyOption是否为空 

              headerKey、headerValue 初始的键、值 
              
    对应的Action里你的Map类型的值 声明时应该如下写法: 
    private Map <String, String> Return_TR=new java.util.HashMap <String, String>(); 

    struts2的select标签中,常用的有以下几个属性: 
    (1)struts2中的select 标签中,必须设置的属性只有一个,即是list。 
    (2)select标签的list中必须有值,不然会报错。如果没有值,可以加上headerKey, headerValue,这样就可以通过了。如: 
    代码 
    <s:select name="geElement.childType" list="childTypeList" listKey="key" 
    listValue="value" headerKey="0" headerValue="--请选择子类型--"/> 

    其中,即使list中有值,我们也通常会加上headerKey, headerValue,即列表中显示的第一个选项。注意,headerKey不可以为空,不可以为-1。 

    (3)list属性:通常是在action中定义的,必须是一个可以迭代的源,如为一个List, Map, Set等。如果是一个Map, 
    那么map的key就对应于select标签中的value,map中的value就对应于select标签中的 option。而如果是一个List或者是一个Set, 
    那么可以通过listKey和listValue指定。 

    (4)listKey和listValue:listKey即对应于select标签中的value, listValue即对应于select标签中的option。 

    (5)name属性:即是表单中select的名称 
           

           HTML: 
             <select name="lst_QproProduce" id="lst_QproProduce"> 
                 <option value="1" selected>英语</option> 
                 <option value="2" selected>汉语</option> 
             </select> 

    URL参数传递: 
       Struts2:                    
              <s:praram name="test" value="testValue" /> 
              例:<a href='<s:url="test.action"> 
                 <s:param name="test" value="testValue"/></s:url> '> urlTest </a> 
       HTML: 
              url?name = testValue 
              例:192.168.1.1/test.action?name=testValue 
                
    日期下拉框: 
       Struts2:                    
         <s:datetimepicker 
            label="toggleType='wipe'" 
            value="${orderMain.orderDate}" 
            toggleType="wipe" 
            toggleDuration="300" 
            displayFormat="yyyy-MM-dd" 
            name="orderMain.orderDate"/> 
         说明:${orderMain.orderDate}取类的值,这个参数也可不写,用name就可以。 
         使用该tag时要在</head>前要加入<s:head/>。 

       HTML: 
          只能用js写了.事实上struts2 的datetimepicker也是js的封装. 
       

    隐藏域: 
       strut2: 
            <s:hidden name="Value"/> 
       HTML: 
             <input type="hidden" name="orderMain.orderId" value="1" /> 

       另外,struts2的tag是默认在enter时自动提交表单,要屏蔽此功能。在onkeydown事件中加入键盘触发代码。 
    例:if(event.keyCode==13) event.keyCode=9;就是将回车转成tab键. 
    还有一种方法更为简便方法: 
    //回车转Tab 
    function EnterTabGlobal(){ 
    document.onkeydown=function keyDown(){ 
            if(event.keyCode==13) 
             event.keyCode=9 
           } 

    //在onLoad执行 


    一、 url标签 
     简介 
    url标签用于生成一个URL地址,可以通过url标签指定param子元素,从而向指定URL发送请求参数。 
    1. jsp代码 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> 
    <title>使用s:url来生成一个URL地址</title> 
    </head> 
    <body> 
    <h2>s:url来生成一个URL地址</h2> 
    只指定value属性的形式。<br> 
    <s:url value="editGadget.action"/> 
    <hr> 
    指定action属性,且使用param传入参数的形式。<br> 
    <s:url action="showBook"> 
    <s:param name="author" value="'yeeku'" /> 
    </s:url> 
    <hr> 
    既不指定action属性,也不指定value属性,且使用param传入参数的形式。<br> 
    <s:url includeParams="get" > 
    <s:param name="id" value="%{'22'}"/> 
    </s:url> 
    <hr> 
    同时指定action属性和value属性,且使用param传入参数的形式。<br> 
    <s:url action="showBook" value="xxxx"> 
    <s:param name="author" value="'yeeku'" /> 
    </s:url></body></html> 
    备注:我们用的最多的是以下的方式: 
    <s:url id="url" action="preModifyCategoryName" includeParams="none" namespace="/category"> 
    <s:param name="categoryId" value="%{categoryId}"/> 
    </s:url> 
    <s:a href="%{url}"> 
    <s:text name="modify_category_name"/> 
    </s:a> 
    2. 页面效果 
    s:url来生成一个URL地址 
    只指定value属性的形式。 
    editGadget.action 
    ________________________________________ 
    指定action属性,且使用param传入参数的形式。 
    /portal/test/showBook.action?author=yeeku 
    ________________________________________ 
    既不指定action属性,也不指定value属性,且使用param传入参数的形式。 
    /portal/test/s-url.jsp?id=22 
    ________________________________________ 
    同时指定action属性和value属性,且使用param传入参数的形式。 
    xxxx?author=yeeku 
    二、 s:checkboxlist标签 
     简介 
    Checkboxlist标签可以一次创建多个复选框,用于一次生成多个HTML标签中的<inputtype=”checkbox” …/>,它根据list属性指定的集合来生成多个复选框。 
    1. jsp代码 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> 
    <title>使用s:checkboxlist生成多个复选框</title> 
    <s:head/> 
    </head> 
    <body> 
    <h3>使用s:checkboxlist生成多个复选框</h3> 
    <s:form> 
    <!-- 使用简单集合来生成多个复选框 --> 
    <s:checkboxlist name="a" label="请选择您喜欢的图书" labelposition="top" 
    list="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , '基于J2EE的Ajax宝典'}"/> 
    <!-- 使用简单Map对象来生成多个复选框 --> 
    <s:checkboxlist name="b" label="请选择您想选择出版日期" labelposition="top" 
    list="#{'Spring2.0宝典':'2006年10月' , '轻量级J2EE企业应用实战':'2007月4月' , '基于J2EE的Ajax宝典':'2007年6月'}" 
    listKey="key" 
    listValue="value"/> 
    <s:bean name="lee.BookService" id="bs"/> 
    </s:form> 
    </body> 
    </html> 
    备注 
     <!-- 使用集合里放多个JavaBean实例来生成多个复选框 --> 
    <s:checkboxlist name="b" label="请选择您喜欢的图书" labelposition="top" 
    list="#bs.books" 
    listKey="name" 
    listValue="author"/> 
     listKey:该属性指定集合元素中某个属性作为复选框的value. 
     listValue: 该属性指定集合元素中某个属性作为复选框的标签。 
    2. 页面效果 
    三、 使用s:combobox生成下拉输入框 
     简介 
    Combobox标签生成一个单行文本框和下拉列表框的组合,但两个表单元素只对应一个请求参数,只有单行文本框里的值才包含请求参数,而下拉列表框则只是用于辅助输入,并没有name,也不会产生请求参数。使用该标签,需要指定一个list属性,该list属性指定的集合将用于生成列表项。 
    1. Jsp代码 
    <body> 
    <h3>使用s:combobox生成下拉输入框</h3> 
    <s:form> 
    <s:combobox label="请选择您喜欢的图书" theme="css_xhtml" labelposition="top" 
    list="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , '基于J2EE的Ajax宝典'}" 
    size="20" maxlength="20" name="book"/> 
    </s:form> 
    </body> 
    1. 页面效果 
    第一步 
    第二步 
    备注: 
    与<s:select …/>标签不同的是,对于下面的下拉列表,无需指定listKey和listValue属性,因为此处的下拉列表,不再用于发送请求参数,而仅仅是用于辅助输入,因此该下拉列表的value没有任何意义。(注:使用combobox标签时不能指定listKey和 listValue属性) 
    四、 使用s:datetimepicker生成日期选择框 
     简介 
    Datetimepicker标签生成一个日期,时间下拉选择框,当我们使用该日期,时间选择框选择某个日期,时间,系统会自动将选中的日期,时间输入指定文本框。 
    1. Jsp代码 
    <body> 
    <h3>使用使用s:datetimepicker生成日期选择框</h3> 
    <s:form theme="simple"> 
    日期选择部件,指定toggleType属性,且指定value="today"<br> 
    <s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><hr> 
    日期选择部件,指定了format属性<br> 
    <s:datetimepicker name="order.date" label="购买日期" displayFormat="dddd年MM月dd日"/><hr> 
    日期选择部件,指定了weekStartsOn属性<br> 
    <s:datetimepicker name="order.date" label="购买日期" displayFormat="dddd年MM月dd日" weekStartsOn="2"/><hr> 
    时间选择部件<br> 
    <s:datetimepicker label="选择出发时间'" name="start" type="time" value="13:00"/><hr> 
    </s:form> 
    </body> 
    2. 页面效果 
    第一步 
    第二步 
    第三步 : 
    第四步: 
    备注 
     toggleType:指定日期选择框出现、隐藏的方式,可以选择plain,wipe,explode和fade4个值。 
     value:指定当前的日期,时间。可使用today来代表今天。 
    五、 使用s:select生成下拉选择框 
     简介 
    Select 标签用于生成一个下拉列表框,通过为该元素指定list属性,系统会使用list属性指定的集合来生成下拉列表框的选项。 
    1. Jsp代码 
    <body> 
    <h3>使用s:select生成下拉选择框</h3> 
    <s:form> 
    <!-- 使用简单集合来生成下拉选择框 --> 
    <s:select name="a" label="请选择您喜欢的图书" labelposition="top" multiple="true" 
    list="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , 'JavaScript: The Definitive Guide'}"/> 
    <!-- 使用简单Map对象来生成下拉选择框 --> 
    <s:select name="b" label="请选择您想选择出版日期" labelposition="top" 
    list="#{'Spring2.0宝典':'2006年10月' , '轻量级J2EE企业应用实战':'2007月4月' , '基于J2EE的Ajax宝典':'2007年6月'}" 
    listKey="key" 
    listValue="value"/> 
    <s:bean name="lee.BookService" id="bs"/> 
    <!-- 使用集合里放多个JavaBean实例来生成下拉选择框 --> 
    <s:select name="b" label="请选择您喜欢的图书" labelposition="top" multiple="true" 
    list="#bs.books" 
    listKey="author" 
    listValue="name"/> 
    </s:form> 
    </body> 
    2. 页面效果 
    第二步 
    六、使用s:radio生成多个单选框 
     简介 
    s:radio生成多个单选框。 
    1. Jsp代码 
    <body> 
    <h3>使用s:radio生成多个单选框</h3> 
    <s:form> 
    <!-- 使用简单集合来生成多个单选框 --> 
    <s:radio name="a" label="请选择您喜欢的图书" labelposition="top" 
    list="{'Spring2.0宝典' , 'Spring In Action' , 'JavaScript: The Definitive Guide'}"/> 
    <!-- 使用简单Map对象来生成多个单选框 --> 
    <s:radio name="b" label="请选择您想选择出版日期" labelposition="top" 
    list="#{'Spring2.0宝典':'2006年10月' , '轻量级J2EE企业应用实战':'2007月4月' , '基于J2EE的Ajax宝典':'2007年6月'}" 
    listKey="key" 
    listValue="value"/> 
    <s:bean name="lee.BookService" id="bs"/> 
    <!-- 使用集合里放多个JavaBean实例来生成多个单选框 --> 
    <s:radio name="c" label="请选择您喜欢的图书" labelposition="top" 
    list="#bs.books" 
    listKey="author" 
    listValue="name"/> 
    </s:form> 
    </body> 
    2、 页面效果 
    七、使用s:optgroup生成下拉选择框的选项组 
     简介 
    Optgroup标签用于生成一个下拉列表框的选项组。 
    1. Jsp代码 
    <body> 
    <h3>使用s:optgroup生成下拉选择框的选项组</h3> 
    <s:form> 
    <!-- 使用Map对象来生成下拉选择框的选项组 --> 
    <s:select label="选择您喜欢的图书" 
    name="book" 
    list="#{'Spring2.0宝典':'李刚','轻量级J2EE企业应用实战':'李刚','基于J2EE的Ajax宝典':'李刚'}" 
    listKey="value" 
    listValue="key"> 
    <s:optgroup label="Rod Johnson" 
    list="#{'Expert One-on-One J2EE Design and Development':'Johnson'}" 
    listKey="value" 
    listValue="key"/> 
    <s:optgroup label="David Flanagan" 
    list="#{'JavaScript: The Definitive Guide':'David'}" 
    listKey="value" 
    listValue="key"/> 
    </s:select> 
    </s:form> 
    </body> 
    2、 页面效果 
    第二步 
    八、使用s:optiontransferselect来生成可移动列表项的下拉列表框 
     简介 
    使用s:optiontransferselect来生成可移动列表项的下拉列表框。 
    1. Jsp代码 
    <body> 
    <h3>使用s:optiontransferselect来生成可移动列表项的下拉列表框</h3> 
    <s:form> 
    <!-- 使用简单集合对象来生成可移动的下拉列表框 --> 
    <s:optiontransferselect 
    label="请选择你喜欢的图书" 
    name="cnbook" 
    leftTitle="中文图书:" 
    rightTitle="外文图书" 
    list="{'Spring2.0宝典','轻量级J2EE企业应用实战','基于J2EE的Ajax宝典'}" 
    multiple="true" 
    addToLeftLabel="向左移动" 
    selectAllLabel="全部选择" 
    addAllToRightLabel="全部右移" 
    headerKey="cnKey" 
    headerValue="--- 选择中文图书 ---" 
    emptyOption="true" 
    doubleList="{' J2EE Design and Development', 'The Definitive Guide'}" 
    doubleName="enBook" 
    doubleHeaderKey="enKey" 
    doubleHeaderValue="--- 选择外文图书 ---" 
    doubleEmptyOption="true" 
    doubleMultiple="true" 
    /> 
    </s:form> 
    </body> 
    2、 页面效果 
    备注: 
    如果我们不想用它默认的图标,我们可以添加标签,将它默认的覆盖掉:例如我们添加如下代码: 
    addToRightLabel="向右移动" 
    leftDownLabel="下移按钮 " 
    页面效果 
    九、使用s:updownselect生成可上下移动选项的下拉选择框 
     简介 
    Updownselect标签的用法非常类似于select标签的用法,区别是该标签声称的列表框可以支持选项的上下移动。 
    1. Jsp代码 
    <body> 
    <h3>使用s:updownselect生成可上下移动选项的下拉选择框</h3> 
    <s:form> 
    <!-- 使用简单集合来生成可上下移动选项的下拉选择框 --> 
    <s:updownselect name="a" label="请选择您喜欢的图书" labelposition="top" 
    moveUpLabel="向上移动" 
    list="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , 'JavaScript: The Definitive Guide'}"/> 
    <!-- 使用简单Map对象来生成可上下移动选项的下拉选择框 
    且使用emptyOption="true"增加一个空选项--> 
    <s:updownselect name="b" label="请选择您想选择出版日期" labelposition="top" 
    moveDownLabel="向下移动" 
    list="#{'Spring2.0宝典':'2006年10月' , '轻量级J2EE企业应用实战':'2007月4月' , '基于J2EE的Ajax宝典':'2007年6月'}" 
    listKey="key" 
    emptyOption="true" 
    listValue="value"/> 
    <s:bean name="lee.BookService" id="bs"/> 
    <!-- 使用集合里放多个JavaBean实例来可上下移动选项的生成下拉选择框 --> 
    <s:updownselect name="c" label="请选择您喜欢的图书的作者" labelposition="top" 
    selectAllLabel="全部选择" multiple="true" 
    list="#bs.books" 
    listKey="author" 
    listValue="name"/> 
    </s:form> 
    </body> 
    2.页面效果 
    十、使用s:doubleselect生成级联下拉列表框 
     简介 
    1.Jsp代码 
    <body> 
    <h3>使用s:doubleselect生成级联下拉列表框</h3> 
    <s:form action="x" method="post" theme="simple"> 
    <s:doubleselect 
    label="请选择您喜欢的图书" 
    name="author" list="{'李刚', 'David'}" 
    doubleList="top == '李刚' ? {'Spring2.0宝典', '轻量级J2EE企业应用实战' , '基于J2EE的Ajax宝典'} : {'JavaScript: The Definitive Guide'}" 
    doubleName="book"/> 
    </s:form> 
    </body> 
    2。页面效果 
    备注: 
    错误原因可能是我们的模板有bug. 
    十一、使用s:tree和s:treenode标签生成静态树 
     简介 
    1。Jsp代码 
    <body> 
    <s:tree label="计算机图书" id="book" theme="ajax" 
    showRootGrid="true" showGrid="true" treeSelectedTopic="treeSelected"> 
    <s:treenode theme="ajax" label="李刚" id="yeeku"> 
    <s:treenode theme="ajax" label="Spring2.0宝典" id="spring"/> 
    <s:treenode theme="ajax" label="轻量级J2EE企业应用实战" id="lightweight"/> 
    <s:treenode theme="ajax" label="基于J2EE的Ajax宝典" id="ajax"/> 
    </s:treenode> 
    <s:treenode theme="ajax" label="David" id="David"> 
    <s:treenode theme="ajax" label="JavaScript: The Definitive Guide" id="javascript"/> 
    </s:treenode> 
    <s:treenode theme="ajax" label="Johnson" id="Johnson"> 
    <s:treenode theme="ajax" label="Expert One-on-One J2EE Design and Development" id="j2ee"/> 
    </s:treenode> 
    </s:tree> 
    </body> 
    2。页面效果 
    十二、使用s:append标签拼接两个集合 
     简介 
    使用s:append标签拼接 多个集合,组成一个新的集合。 
    1.Jsp代码 
    <body> 
    <s:append id="newList"> 
    <s:param value="{'Spring2.0宝典','轻量级J2EE企业应用实战','基于J2EE的Ajax宝典'}" /> 
    <s:param value="{'新东方IT培训', '东方标准职业教育'}" /> 
    </s:append> 
    <table border="1" width="240"> 
    <s:iterator value="#newList" status="st"> 
    <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>> 
    <td><s:property/></td> 
    </tr> 
    </s:iterator> 
    </table> 
    </body> 
    2。页面效果 
    十三、使用s:append标签拼接集合和Map 
     简介 
    Append标签用于将多个集合对象拼接起来,组成一个新的集合。通过这种拼接,从而允许通过一个<s:iterator …/>标签就完成对多个集合的迭代。 
    1.Jsp代码 
    <body> 
    <s:append id="newList"> 
    <s:param value="#{'Spring2.0宝典':'李刚','轻量级J2EE企业应用实战':'李刚','基于J2EE的Ajax宝典':'李刚'}" /> 
    <s:param value="#{'新东方IT培训', '东方标准职业教育'}" /> 
    </s:append> 
    <table border="1" width="240"> 
    <s:iterator value="#newList" status="st"> 
    <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>> 
    <td><s:property value="key"/></td> 
    <td><s:property value="value"/></td> 
    </tr> 
    </s:iterator> 
    </table> 
    </body> 
    2.页面效果 
    十五、使用s:generator生成集合 
     简介 
    使用generator标签可以将指定字符串按指定分隔符分隔成多个子串,临时生成的多个子串可以使用iterator标签迭代输出。可以这样理解:generator将一个字符串转化成一个集合。在该标签的标签体内,整个临时生成的集合将位于ValueStack的顶端,但一旦该标签结束,该集合将被移出ValueStack。 
    1.Jsp代码 
    <body> 
    <s:generator val="'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典'" 
    separator="," id="books" count="2"/> 
    <table border="1" width="240"> 
    <% 
    java.util.Iterator i = (java.util.Iterator) pageContext.getAttribute("books"); 
    while(i.hasNext()) 

    String s = (String) i.next(); %> 
    <tr> 
    <td><%=s%></td> 
    </tr> 
    <% 

    %> 
    </table> 
    </body> 
    备注:如果指定了count属性,则以为这集合中最多只能包含count个元素(就是前coun个元素);如果指定了id属性,就可以将临时生成的集合放置到pageContext属性中。 
    2.页面效果 
    3.jsp代码 
    <body> 
    <table border="1" width="240"> 
    <s:generator val="'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典'" separator=","> 
    <s:iterator status="st"> 
    <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>> 
    <td><s:property/></td> 
    </tr> 
    </s:iterator> 
    </s:generator> 
    </table> 
    </body>
  • 相关阅读:
    有关javamelody的配置
    jsp页面路径问题
    mavne问题解决---Dynamic Web Module 2.3 or newer
    centos配置数据源和java环境配置
    iBatis之Iterator的使用
    [转]Android MediaPlayer状态机
    [转]Android Activity的加载模式和onActivityResult方法之间的冲突
    ubuntu1304无法启动桌面系统的问题和解决
    java使用AES256解密
    [转]理解Linux的处理器负载均值
  • 原文地址:https://www.cnblogs.com/Code-Engineering/p/5745422.html
Copyright © 2011-2022 走看看