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

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

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

    云自無心水自閑

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

    Struts2 and Ajax --使用Dojo和Div

    Posted on 2008-02-10 20:56 云自無心水自閑 閱讀(12241) 評論(8)  編輯  收藏 所屬分類: Java心得體會Struts2AjaxDojo

    Struts2和Struts相比,一個重大改進就是支持Ajax。 本文主要看一下Struts2中的Div是如何用來輸出Ajax結果,其中主要使用了Dojo。

    首先,我們先創建一個簡單的用例,在這個用例中,將在屏幕上顯示一個用戶列表,點擊列表中的userid時,列表的下方將顯示用戶的詳細信息,顯示用戶詳細信息的這個步驟我們將使用Ajax。

    一、創建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>

    二、創建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>

    三、頁面: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>


    四、頁面:userdetail.jsp,用于顯示用戶詳細信息,由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,生成用戶列表數據,交由userlisting.jsp顯示,在實際的應用中,這部分的數據一般是從數據庫中取得的。
    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,當userid被選中時,取得用戶詳細數據,通過dojo來調用。
    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,用于封裝用戶信息
    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來測試一下。
    當列表中的userid被點中后,javaScript通知Div標簽從URL中動態加載返回內容。這個例子中,UserDetailAction取得用戶信息并傳遞給userdetail.jsp。userdetail.jsp生成最終的展示結果,顯示在Div中。


    評論

    # re: Struts2 and Ajax --使用Dojo和Div  回復  更多評論   

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

    # re: Struts2 and Ajax --使用Dojo和Div[未登錄]  回復  更多評論   

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

    # re: Struts2 and Ajax --使用Dojo和Div  回復  更多評論   

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

    # re: Struts2 and Ajax --使用Dojo和Div  回復  更多評論   

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

    # re: Struts2 and Ajax --使用Dojo和Div[未登錄]  回復  更多評論   

    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  回復  更多評論   

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

    # re: Struts2 and Ajax --使用Dojo和Div[未登錄]  回復  更多評論   

    2010-01-06 15:21 by 初學者
    按照樓主提供的源碼,在IDE中運行了,在DetailAction處理的時候一直得不到從List頁面傳遞過來的ID值,導致不能顯示用戶的詳細信息。不知道是我拷貝時候出了問題還是代碼原本有問題!
    最后通過request獲取List頁面<s:hidden name="userid"></s:hidden>的id值得以解決。

    # re: Struts2 and Ajax --使用Dojo和Div  回復  更多評論   

    2010-07-19 11:44 by jsq
    用不了啊。
    主站蜘蛛池模板: 亚洲色偷偷色噜噜狠狠99| 亚洲av无码日韩av无码网站冲| 亚洲精品国产精品| 国内精品免费久久影院| 毛片a级三毛片免费播放| 亚洲日本va中文字幕久久| va天堂va亚洲va影视中文字幕| 一级特级aaaa毛片免费观看| 国产h肉在线视频免费观看| 亚洲成av人片一区二区三区| 亚洲大香人伊一本线| caoporn成人免费公开| 好大好硬好爽免费视频| 亚洲AV无码精品色午夜果冻不卡| 亚洲人成电影网站色www| 久久精品国产这里是免费| 免费国产在线观看不卡| 亚洲成人黄色网址| 三年片在线观看免费西瓜视频| 在线不卡免费视频| 久久亚洲AV成人无码国产| 一个人看的免费高清视频日本| 成年私人影院免费视频网站| 久久国产亚洲电影天堂| 免费无码婬片aaa直播表情| 一本无码人妻在中文字幕免费| 国产∨亚洲V天堂无码久久久| 久久水蜜桃亚洲AV无码精品| 黄网站色在线视频免费观看| 亚洲午夜久久久久久噜噜噜| WWW国产亚洲精品久久麻豆| 人禽杂交18禁网站免费| 亚洲视频2020| 97无码人妻福利免费公开在线视频| 国产精品免费看久久久无码| 亚洲午夜精品一区二区公牛电影院 | 日日夜夜精品免费视频| 亚洲国产日产无码精品| 男女作爱在线播放免费网站| 久久久久无码专区亚洲av| 爱情岛论坛亚洲品质自拍视频网站|