<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
    用不了啊。
    主站蜘蛛池模板: 亚洲av无码av在线播放| 91人成网站色www免费下载| 免费观看美女裸体网站| 图图资源网亚洲综合网站| 国产精品免费大片一区二区| 永久免费av无码网站大全| 亚洲午夜国产精品无卡| 国产激情免费视频在线观看 | 国产无遮挡色视频免费观看性色| 在线精品免费视频| 亚洲国产模特在线播放| 午夜精品一区二区三区免费视频| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 国产亚洲精品久久久久秋霞| 成a人片亚洲日本久久| 成人A级毛片免费观看AV网站| 亚洲视频一区在线| 久久青草免费91观看| 亚洲中文久久精品无码ww16| 四虎精品成人免费视频| 亚洲v国产v天堂a无码久久| 国产精品亚洲精品爽爽| 免费人成网站在线播放| 色爽黄1000部免费软件下载| 亚洲麻豆精品国偷自产在线91| 无码免费又爽又高潮喷水的视频| 亚洲国产精品不卡毛片a在线| 一级特黄a大片免费| 综合亚洲伊人午夜网| 成人性生交大片免费看中文| 亚洲AV无码不卡无码| 精品无码国产污污污免费网站 | 青柠影视在线观看免费| 亚洲v高清理论电影| 亚洲人成在线免费观看| 亚洲精品一二三区| 在线免费观看国产视频| 男女作爱免费网站| 国产精品亚洲片在线观看不卡| 免费国产成人α片| 亚洲成人福利在线|