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

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

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

    云自無(wú)心水自閑

    天平山上白云泉,云自無(wú)心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Struts2 and Ajax --使用Dojo和Div

    Posted on 2008-02-10 20:56 云自無(wú)心水自閑 閱讀(12239) 評(píng)論(8)  編輯  收藏 所屬分類(lèi): Java 、心得體會(huì)Struts2 、Ajax 、Dojo

    Struts2和Struts相比,一個(gè)重大改進(jìn)就是支持Ajax。 本文主要看一下Struts2中的Div是如何用來(lái)輸出Ajax結(jié)果,其中主要使用了Dojo。

    首先,我們先創(chuàng)建一個(gè)簡(jiǎn)單的用例,在這個(gè)用例中,將在屏幕上顯示一個(gè)用戶(hù)列表,點(diǎn)擊列表中的userid時(shí),列表的下方將顯示用戶(hù)的詳細(xì)信息,顯示用戶(hù)詳細(xì)信息的這個(gè)步驟我們將使用Ajax。

    一、創(chuàng)建web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      
    <filter>
        
    <filter-name>struts2</filter-name>
        
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
      
    </filter>
      
    <filter-mapping>
        
    <filter-name>struts2</filter-name>
        
    <url-pattern>/*</url-pattern>
      
    </filter-mapping>
    </web-app>

    二、創(chuàng)建struts.xml
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
    >
    <struts>
        
    <package name="ajaxdemo" extends="struts-default">
            
    <action name="UserListingAction" class="ajaxdemo.action.UserListingAction">
                
    <result>/userlisting.jsp</result>
            
    </action>
            
    <action name="UserDetailAction" class="ajaxdemo.action.UserDetailAction">
                
    <result>/userdetail.jsp</result>
            
    </action>
        
    </package> 
    </struts>

    三、頁(yè)面:userlisting.jsp
    Displays list of users
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
      
    <head>
        
    <s:head theme="ajax"/>
        
      
    </head>
      
    <script>
        function show_user_details(id) {
          document.frm_user.userid.value = id;
          dojo.event.topic.publish("show_detail");
        }
      
    </script>
      
    <body>
        
    <s:form id="frm_user" name="frm_user">
          
    <h1>User Listing</h1>
          
    <s:if test="userList.size > 0">
            
    <table border="1">
              
    <s:iterator value="userList">
                
    <tr>
                  
    <td>
                    
    <s:a href="#" onclick="javascript:show_user_details('%{id}');return false;"><s:property value="id" /></s:a>
                  
    </td>
                  
    <td>
                    
    <s:property value="name" />
                  
    </td>
                
    </tr>
              
    </s:iterator>
            
    </table>
          
    </s:if> 
          
    <s:hidden name="userid"/>
          
    <s:url id="d_url" action="UserDetailAction" />
          
    <s:div  id="user_details" href="%{d_url}" theme="ajax" listenTopics="show_detail" formId="frm_user" >
          
    </s:div>
        
    </s:form>
      
    </body>
    </html>


    四、頁(yè)面:userdetail.jsp,用于顯示用戶(hù)詳細(xì)信息,由userlisting.jsp加載
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <h1>User Details</h1>
    <s:if test="userDetails != null">
        
    <table>
          
    <tr><td>Id:</td><td><s:property value="userDetails.id" /></td></tr>
          
    <tr><td>Name:</td><td><s:property value="userDetails.name" /></td></tr>
          
    <tr><td>Email:</td><td><s:property value="userDetails.email" /></td></tr>
          
    <tr><td>Address:</td><td><s:property value="userDetails.address" /></td></tr>
        
    </table>
    </s:if>

    五、ajaxdemo.action.UserListingAction.java,生成用戶(hù)列表數(shù)據(jù),交由userlisting.jsp顯示,在實(shí)際的應(yīng)用中,這部分的數(shù)據(jù)一般是從數(shù)據(jù)庫(kù)中取得的。
    package ajaxdemo.action;

    import ajaxdemo.dto.UserListDTO;
    import com.opensymphony.xwork2.ActionSupport;
    import java.util.ArrayList;
    import java.util.List;

    /** Populates the user listing data */
    public class UserListingAction extends ActionSupport {

        
    private List<UserListDTO> userList; // this is available in view automatically!
        public String execute() throws Exception {
            
            
    // create 2 user objects and add to a list
            setUserList((List<UserListDTO>new ArrayList());
            UserListDTO user 
    = new UserListDTO();
            user.setId(
    "gjose");
            user.setName(
    "Grace Joseph");
            getUserList().add(user);
            
            user 
    = new UserListDTO();
            user.setId(
    "peter");
            user.setName(
    "PeterSmith");
            getUserList().add(user);
            
    return SUCCESS;
        }


        
    public List<UserListDTO> getUserList() {
            
    return userList;
        }


        
    public void setUserList(List<UserListDTO> userList) {
            
    this.userList = userList;
        }

    }

    六、ajaxdemo.action.UserDetailAction.java,當(dāng)userid被選中時(shí),取得用戶(hù)詳細(xì)數(shù)據(jù),通過(guò)dojo來(lái)調(diào)用。
    package ajaxdemo.action;

    import ajaxdemo.dto.UserDetailDTO;
    import com.opensymphony.xwork2.ActionSupport;

    /* Populates user details for a user id selected */
    public class UserDetailAction extends ActionSupport {
        
        
    private String userid;
        
    private UserDetailDTO userDetails;
        
        
    public String execute() throws Exception {
            
    // populate only when userid is selected
            if(userid!=null && !userid.equals(""))
                populateDetail(userid);
            
    return SUCCESS;
        }

        
        
    private void populateDetail(String id) {
            userDetails 
    = new UserDetailDTO();
            userDetails.setId(id);
            userDetails.setName(
    "The Complete Name");
            userDetails.setEmail(
    "admin@struts2.org");
            userDetails.setAddress(
    "rich street, lavish road, Struts Land");
        }


        
    public String getUserid() {
            
    return userid;
        }


        
    public void setUserid(String userid) {
            
    this.userid = userid;
        }


        
    public UserDetailDTO getUserDetails() {
            
    return userDetails;
        }


        
    public void setUserDetails(UserDetailDTO userDetails) {
            
    this.userDetails = userDetails;
        }


    }


    七、ajaxdemo.action.UserDetailDTO.java、POJO,用于封裝用戶(hù)信息
    package ajaxdemo.dto;

    public class UserDetailDTO {

        
    private String id;
        
    private String name;
        
    private String email;
        
    private String address;

        
    public String getId() {
            
    return id;
        }


        
    public void setId(String id) {
            
    this.id = id;
        }


        
    public String getName() {
            
    return name;
        }


        
    public void setName(String name) {
            
    this.name = name;
        }


        
    public String getEmail() {
            
    return email;
        }


        
    public void setEmail(String email) {
            
    this.email = email;
        }


        
    public String getAddress() {
            
    return address;
        }


        
    public void setAddress(String address) {
            
    this.address = address;
        }

    }

    OK,部署完畢后,輸入http://localhost:8080/ajaxdemo/UserListingAction.action來(lái)測(cè)試一下。
    當(dāng)列表中的userid被點(diǎn)中后,javaScript通知Div標(biāo)簽從URL中動(dòng)態(tài)加載返回內(nèi)容。這個(gè)例子中,UserDetailAction取得用戶(hù)信息并傳遞給userdetail.jsp。userdetail.jsp生成最終的展示結(jié)果,顯示在Div中。


    評(píng)論

    # re: Struts2 and Ajax --使用Dojo和Div  回復(fù)  更多評(píng)論   

    2008-02-27 16:13 by border
    大哥:
    下次翻譯的時(shí)候能不能給個(gè)連接。
    http://www.struts2.org/struts2-and-ajax-using-dojo-div-part-i/

    # re: Struts2 and Ajax --使用Dojo和Div[未登錄](méi)  回復(fù)  更多評(píng)論   

    2009-02-06 16:09 by gg
    哈哈,樓上的太有才了

    # re: Struts2 and Ajax --使用Dojo和Div  回復(fù)  更多評(píng)論   

    2009-02-09 19:55 by 無(wú)名氏
    即使是翻譯的也不錯(cuò),頂博主。

    # re: Struts2 and Ajax --使用Dojo和Div  回復(fù)  更多評(píng)論   

    2009-04-04 18:48 by aring
    是不是少了個(gè)ajaxdemo.dto.UserListDTO。java???

    # re: Struts2 and Ajax --使用Dojo和Div[未登錄](méi)  回復(fù)  更多評(píng)論   

    2009-05-17 04:14 by lfc
    package ajaxdemo.dto;

    public class UserListDTO {
    private String id;
    private String name;
    private String email;
    private String address;
    public String getId() {
    return id;
    }
    public void setId(String id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getEmail() {
    return email;
    }
    public void setEmail(String email) {
    this.email = email;
    }
    public String getAddress() {
    return address;
    }
    public void setAddress(String address) {
    this.address = address;
    }
    }

    # re: Struts2 and Ajax --使用Dojo和Div  回復(fù)  更多評(píng)論   

    2009-06-17 01:55 by 含笑半步癲
    2樓的仁兄真逗..謝謝你.給了原裝的,使我對(duì)這個(gè)例子又恢復(fù)了信心.哈哈...

    # re: Struts2 and Ajax --使用Dojo和Div[未登錄](méi)  回復(fù)  更多評(píng)論   

    2010-01-06 15:21 by 初學(xué)者
    按照樓主提供的源碼,在IDE中運(yùn)行了,在DetailAction處理的時(shí)候一直得不到從List頁(yè)面?zhèn)鬟f過(guò)來(lái)的ID值,導(dǎo)致不能顯示用戶(hù)的詳細(xì)信息。不知道是我拷貝時(shí)候出了問(wèn)題還是代碼原本有問(wèn)題!
    最后通過(guò)request獲取List頁(yè)面<s:hidden name="userid"></s:hidden>的id值得以解決。

    # re: Struts2 and Ajax --使用Dojo和Div  回復(fù)  更多評(píng)論   

    2010-07-19 11:44 by jsq
    用不了啊。
    主站蜘蛛池模板: 男男gay做爽爽免费视频| 日本阿v免费费视频完整版| 国产一区二区三区在线免费| 亚洲一区在线观看视频| 免费播放美女一级毛片| 色妞WWW精品免费视频| 亚洲熟妇无码八V在线播放| 免费无码精品黄AV电影| 亚洲色偷偷偷综合网| 国产精品成人四虎免费视频| 国产99久久亚洲综合精品| 亚洲国产成人久久综合一区77 | 免费特级黄毛片在线成人观看| 亚洲最大av资源站无码av网址| 德国女人一级毛片免费| 日韩亚洲人成在线综合| 狠狠综合久久综合88亚洲| 日韩免费无码一区二区三区| 亚洲国产精品免费在线观看| 午夜高清免费在线观看| 色多多www视频在线观看免费| 亚洲乱码中文字幕久久孕妇黑人| 暖暖免费在线中文日本| 亚洲综合国产精品第一页| 青青操在线免费观看| 国产乱辈通伦影片在线播放亚洲 | 成人免费看片又大又黄| 亚洲乱理伦片在线观看中字| 91短视频免费在线观看| 特色特黄a毛片高清免费观看| 99ee6热久久免费精品6| 妞干网在线免费观看| 中文字幕亚洲一区二区三区| 91大神免费观看| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲午夜福利精品无码| 免费福利视频导航| 特级毛片aaaa免费观看| 亚洲性一级理论片在线观看| 免费人成视频在线观看不卡| 亚洲国产欧美国产综合一区 |