<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE社區(qū)

    茍有恒,何必三更起五更眠;
    最無益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    最近做畢業(yè)設(shè)計(jì)用到Struts2 的標(biāo)簽庫,遇到一些比較復(fù)雜的數(shù)據(jù)顯示,個(gè)人還是比較喜歡用tag顯示的,Struts2 tags內(nèi)容豐富,但是所提供的文檔不是很詳細(xì)(個(gè)人認(rèn)為)在showcase下的例子如:<s:select /> <s:doubleselect /> <s:updownselect /> <s:optiontransferselect />等都是一些簡(jiǎn)單的值顯示,在實(shí)際的開發(fā)中并沒有那么簡(jiǎn)單,如果我們要迭代顯示ListMapSet里的值,我們?cè)撛鯓幼瞿兀?/span>

       
    看看html里的例子,

    <select name="sex">

        <option value="man"></option>

        <option value="women"></option>

    </select>

    Sex表示提交的nameman/women是對(duì)應(yīng)頁面顯示提交后所代表的值,男/女則為頁面最終看到的值

       
    而如果我們要顯示一個(gè)List集合里的數(shù)據(jù)該怎么做呢?
       
    看下面的Jsp頁面:

    <select name="department">

        <%

           Department department = null;

           List list = (List) request.getAttribute("list");

           Iterator iter = list.iterator();

           while (iter.hasNext()) {

               department = (Department) iter.next();

        %>

        <option value="<%=department.getDep_name() %>"><%=department.getDep_name()%>&nbsp;&nbsp;&nbsp;</option>

        <%

        }

        %>

    </select>

    迭代的是Department的屬性dep_name,這樣顯示顯得很麻煩,如果Iterator輸出可能會(huì)好點(diǎn),采用JSTL輸出:

    <c:forEach var="department" items="" varStatus="status">

        <tr>

           <td>${status.dep_name }</td>

           <td>${status.dep_id }</td>

           <td>......</td>

        </tr>

    </c:forEach>


    現(xiàn)在看看Struts2的例子:這是Strust2 showcase例子

    <%@ page contentType="text/html; charset=UTF-8"%>

    <%@ taglib prefix="s" uri="/struts-tags"%>

    <html>

    <head>

    <title>Test</title>

    </head>

    <body>

    <center><br>

    <br>

    <br>

    <hr>

    <br>

    <br>

    <s:form action="test_showPost" method="post" theme="simple">

        <table>

           <tr>

               <td><s:select

                  list="{'Windows','Linux','Java','.net','Pertl','PHP'}"

                  name="program" tooltip="select your program" /></td>

           </tr>

            <tr>

               <td><s:select list="posts" name="post.post_name"

                  listKey="post_name" listValue="post_name" headerKey="0"

                  headerValue="請(qǐng)選擇你的職位" required="true"></s:select></td>

           </tr>

           <tr>

               <td><s:checkboxlist name="skills1" label="Skills 1"

                  tooltip="bulktree" list="{'Java', '.Net', 'RoR', 'PHP' }"

                  value="{'Java', '.Net' }" /></td>

           </tr>

           <tr>

               <td><s:checkboxlist name="skills2" label="Skills 2"

                  tooltip="bulktree" list="#{1:'Java', 2:'.Net', 3:'RoR', 4:'PHP' }"

                  listKey="key" listValue="value" value="{1, 2, 3 }" /></td>

           </tr>

           <tr>

               <td><s:doubleselect label="doubleselect test1" name="menu"

                  list="{'fruit','other'}" doubleName="dishes"

                  doubleList="top == 'fruit' ? {'apple', 'orange'} : {'monkey', 'chicken'}" />

               </td>

           </tr>

           <tr>

               <td><s:updownselect label="Favourite Countries"

                  list="#{'england':'England', 'america':'America', 'germany':'Germany'}"

                  name="prioritisedFavouriteCountries" headerKey="-1"

                  headerValue="--- Please Order Them Accordingly ---"

                  emptyOption="true" /></td>

           </tr>

           <tr>

               <td><s:optiontransferselect

                  tooltip="Select Your Favourite Cartoon Characters"

                  label="Favourite Cartoons Characters"

                  name="leftSideCartoonCharacters" leftTitle="Left Title"

                  rightTitle="Right Title" list="{'Popeye', 'He-Man', 'Spiderman'}"

                  multiple="true" headerKey="headerKey"

                  headerValue="--- Please Select ---" emptyOption="true"

                  doubleList="{'Superman', 'Mickey Mouse', 'Donald Duck'}"

                  doubleName="rightSideCartoonCharacters"

                  doubleHeaderKey="doubleHeaderKey"

                  doubleHeaderValue="--- Please Select ---" doubleEmptyOption="true"

                  doubleMultiple="true" /></td>

           </tr>

           <tr>

               <td><s:submit></s:submit></td>

           </tr>

        </table>

    </s:form></center>

    </body>

    </html>

    注意:上面的代碼不需要用table布局,Struts2內(nèi)置了表格功能,run顯示如下:

     


       
    上面的代碼都是一些簡(jiǎn)單的值顯示,實(shí)際的開發(fā)所出現(xiàn)的數(shù)據(jù)都不是現(xiàn)成的。大家可能注意了這段代碼:
       

    <tr>

               <td><s:select list="posts" name="post.post_name"

                  listKey="post_name" listValue="post_name" headerKey="0"

                  headerValue="請(qǐng)選擇你的職位" required="true"></s:select></td>

           </tr>


    下來就來說說Struts2 tag怎么顯示List/Map/Set里的值:
    采用POJO方式訪問 VO是一些最基本的getter/setter省略不寫。
        action
    代碼:

    package com.bulktree.AutoOffice.action;

    import java.util.List;

    import java.util.Map;

    import com.bulktree.AutoOffice.factory.DAOFactory;

    import com.bulktree.AutoOffice.vo.Client;

    import com.bulktree.AutoOffice.vo.ClientUser;

    import com.bulktree.AutoOffice.vo.User;

    import com.opensymphony.xwork2.ActionContext;

    import com.opensymphony.xwork2.ActionSupport;

    publicclass ClientUserAction extends ActionSupport {

       

        private List<Client> clients;

        private List<User> users;

       

        public List<Client> getClients() {

           returnclients;

        }

        publicvoid setClients(List<Client> clients) {

           this.clients = clients;

        }

        public List<User> getUsers() {

           returnusers;

        }

        publicvoid setUsers(List<User> users) {

           this.users = users;

        }

        public String queryClientID() throws Exception {

           Map session = ActionContext.getContext().getSession();

           String userid = (String)session.get("userid");

          

           setUsers(DAOFactory.getEmployeeInstance().queryUidUserid());

           setClients(DAOFactory.getClientInstance().queryByAll(userid));

          

           returnSUCCESS;

        }

    }


       
    下面是用來測(cè)試上面actionjsp頁面:分別使用了<s:select/> <s:doubleselect /> <s:updownselect />來接收List集合里的值

    <s:form action="clientuser_changeClient" method="post">

           <s:doubleselect list="clients" name="client.client_id"

               listKey="client_id" listValue="client_id"

               doubleName="client.client_name" doubleList="clients"

               doubleListKey="client_name" doubleListValue="client_name" />

           <s:updownselect label="All Clients ID" tooltip="show all clients"

               list="clients" headerKey="0" headerValue="--所有客戶編號(hào)--"

               listKey="client_id" listValue="client_id" emptyOption="true"

               moveUpLabel="向上" moveDownLabel="向下" selectAllLabel="全選" />

           <s:updownselect label="All Clients name" tooltip="show all clients"

               list="clients" headerKey="0" headerValue="--所有客戶姓名--"

               listKey="client_name" listValue="client_name" moveUpLabel="向上"

               moveDownLabel="向下" selectAllLabel="全選" emptyOption="true" />

           <s:select list="clients" name="clientuser.client_id"

               tooltip="Change Your Client" label="選擇你將要轉(zhuǎn)讓的客戶" listKey="client_id"

               listValue="client_id" required="true" />

           <s:select list="users" name="clientuser.userid" label="將要轉(zhuǎn)讓給同事"

               tooltip="Choose your partner" listKey="userid" listValue="userid"

               required="true" />

           <s:submit value=" 確認(rèn)轉(zhuǎn)讓 " onclick="alert('轉(zhuǎn)讓后你就失去了該客戶');" />

        </s:form>


       
    說說最簡(jiǎn)單的<s:selelct />其他的以此類推:
    ·select標(biāo)簽必須屬性只有一個(gè)為List
    ·select一定要有值,否則出錯(cuò)。如果我們?cè)?/span>html中使用select時(shí)會(huì)有個(gè)默認(rèn)的值,在Struts2中也是一樣的,如果List,沒有值可以加上headerKey,headerValue就可以通過。
    ·List屬性的值在Action中定義,必須為一個(gè)迭代的List/Map/Set,本例采用List
    · listKey對(duì)應(yīng)html表單select中的value,listValue對(duì)應(yīng)html表單中的option
    ·List/SetlistKeylistValue是一樣的
    ·如果是Map,則mapkey對(duì)應(yīng)key,mapvalue對(duì)應(yīng)value
       
    如下代碼:

    <s:select list="clients" name="clientuser.client_id"

               tooltip="Change Your Client" label="選擇你將要轉(zhuǎn)讓的客戶" listKey="client_id"

               listValue="client_id" required="true" />

        Clientsactionlist的對(duì)象,也就是getter/setter方法的名字,Struts2支持POJO訪問,listKey的值”client_id”則為VO對(duì)象 (client)的屬性(client_id(Struts2支持OGNL)我們還可以加上headerKeyheaderValue用以顯示首行的提示,大家可以加上試試,注意:headerKey的值不能為-1否則編譯不能通過。
        <s:doubleselect />
    <s:select />運(yùn)行機(jī)制是一樣的,不同的就是<s:doubleselect />顯示的是兩個(gè)list/doubleList的值,doubleList的值牽制于list的值,它的內(nèi)部實(shí)現(xiàn)機(jī)制是采用JavaScript
       

    <s:doubleselect list="clients" name="client.client_id"

               listKey="client_id" listValue="client_id"

               doubleName="client.client_name" doubleList="clients"

               doubleListKey="client_name" doubleListValue="client_name" />

        這個(gè)<s:doubleselect />是有問題的,只是為了演示有值,但是沒有真正起到doubleselect的作用,doubleList是按編號(hào)取值的,doubleList對(duì)應(yīng)Map中一個(gè)keyvalue。采用本例的話可以把這樣做:

    Map<Integer, List<clients>> maps = new HashMap<Integer, List<clients>>();

    maps.put(1, clients);

    maps.put(2, clients);

    maps.put(3, clients);

     
    maps
    key為第一級(jí)下拉列表的listKeytopclient的實(shí)例

    <s:doubleselect list="clients" name="client.client_id"

               listKey="id" listValue="client_id"

               doubleName="client.client_name" doubleList="maps.get(top. id)"

               doubleListKey="client_name" doubleListValue="client_name" />




    名稱: ?4C.ESL | .↗Evon
    口號(hào): 遇到新問題?先要尋找一個(gè)方案乄而不是創(chuàng)造一個(gè)方案こ
    mail: 聯(lián)系我


    Feedback

    # re: Struts2中select/doubleselect標(biāo)簽數(shù)據(jù)顯示   回復(fù)  更多評(píng)論   

    2013-12-11 19:43 by zhangsan' or 'a'='a' --
    haoaho
    主站蜘蛛池模板: 免费一级做a爰片久久毛片潮| 亚洲色大成WWW亚洲女子| 国产无限免费观看黄网站| 亚洲不卡AV影片在线播放| 日韩一区二区三区免费播放| 亚洲Av无码乱码在线znlu| 一级视频在线免费观看| 亚洲五月综合缴情在线观看| 99久久99这里只有免费的精品| 久久亚洲国产欧洲精品一| 18以下岁毛片在免费播放| 国产成人亚洲精品| 成人永久免费高清| 免费一区二区无码视频在线播放| 国产性爱在线观看亚洲黄色一级片 | 特级毛片A级毛片免费播放| 亚洲高清无码综合性爱视频| 免费国产va在线观看| 在线亚洲97se亚洲综合在线| 男人进去女人爽免费视频国产| 久久亚洲日韩看片无码| 久久不见久久见中文字幕免费| 亚洲国产精品ⅴa在线观看| 亚洲性日韩精品国产一区二区| 日本人成在线视频免费播放| 亚洲国产精品成人精品小说| 午夜高清免费在线观看| 人成午夜免费大片在线观看| 亚洲精品线在线观看| 在线观看无码的免费网站| 国产无限免费观看黄网站| 亚洲人成人77777在线播放| 免费乱码中文字幕网站| 免费看成人AA片无码视频吃奶| 亚洲一级黄色大片| 亚洲国产综合精品中文字幕| 69精品免费视频| 老外毛片免费视频播放| 亚洲欧洲国产精品久久| 亚洲精品第一国产综合境外资源| 免费A级毛片无码A∨|