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

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

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

    隨筆-4  評論-0  文章-0  trackbacks-0

    Struts2的action的實現:

    package org.gordon;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.ServletRequestAware;
    import org.apache.struts2.interceptor.ServletResponseAware;

    import com.opensymphony.xwork2.ActionSupport;

    public class AutoCompleteAction extends ActionSupport implements
      ServletRequestAware, ServletResponseAware, ApplicationAware 
    {

     
    private HttpServletRequest request;
     
     
    private HttpServletResponse response;
     
     
    private Map map ;
     
     
    private String key;
     
     
    public void setServletRequest(HttpServletRequest request) {
      
    this.request = request;
     }


     
    public void setServletResponse(HttpServletResponse response) {
      
    this.response = response;
     }


     
    public void setApplication(Map map) {
      
    this.map = map;
     }

     
     
    public void setKey(String key){
      
    this.key = key;
     }

     
    private String getAutoCompleteInformation(List list){
      StringBuffer sb 
    = new StringBuffer();
      sb.append(
    "<response>");
      
    for (Iterator it = list.iterator(); it.hasNext();) {
       String str 
    = (String) it.next();
       sb.append(createXMLView(str));
      }

      sb.append(
    "</response>");
      
    return sb.toString();
     }

     
    private List<String> createResults(){
      Set info 
    = (Set) map.get("autoComplete");
      List
    <String> list = null;
      
    if(info!=null){
       list 
    = new ArrayList<String>();
       
    for (Iterator it = info.iterator(); it.hasNext();) {
        String str 
    = (String) it.next();
        String getStr 
    = str.toUpperCase();
        String keyword 
    = key.toUpperCase();
        
    if(getStr.startsWith(keyword)){
         list.add(str);
        }

       }

      }

      
    return list;
     }

     
     
    private String createXMLView(String str){
      StringBuffer sb 
    = new StringBuffer();
      sb.append(
    "<value>");
      sb.append(str);
      sb.append(
    "</value>");
      
    return sb.toString();
     }

     
     
    public String addAutoComplete(){
      
    if(map.containsKey("autoComplete")){
       Set
    <String> set = null;
       set 
    = (Set) map.get("autoComplete");
       set.add(key);
      }
     else {
       Set
    <String> set = new HashSet<String>();
       set.add(key);
       map.put(
    "autoComplete", set);
      }

      
    return SUCCESS;
     }

     
     
    public void returnAutoComplete(){
      PrintWriter out 
    = null;
      
    try {
        out 
    = response.getWriter();
      }
     catch (IOException e) {
       e.printStackTrace();
      }

      List list 
    = createResults();
      
    if(list != null && list.size()>0){
       response.setContentType(
    "text/xml");
       response.setHeader(
    "Cache-Control""no-cache");
       out.println(getAutoCompleteInformation(list));
       out.close();
      }
     else {
       response.setStatus(
    204);
      }

     }

     
     
    public String execute(){
      addAutoComplete();
      
    return SUCCESS;
     }

    }



    html

     

      1<%@ page language="java" pageEncoding="utf-8"%>
      2<%@ taglib uri="/struts-tags" prefix="s"%>
      3<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      4<html>
      5  <head>
      6    <title>Ajax Auto Complete</title>
      7    <style type="text/css">
      8
      9    .mouseOut {
     10    background: #708090;
     11    color: #FFFAFA;
     12    }

     13
     14    .mouseOver {
     15    background: #FFFAFA;
     16    color: #000000;
     17    }

     18    
    </style>
     19    <script type="text/javascript">        
     20        var xmlHttp;
     21        var completeDiv;
     22        var inputField;
     23        var nameTable;
     24        var nameTableBody;
     25
     26        function createXMLHttpRequest() {
     27            if (window.ActiveXObject) {
     28                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     29            }

     30            else if (window.XMLHttpRequest) {
     31                xmlHttp = new XMLHttpRequest();                
     32            }

     33        }

     34
     35        function initVars() {
     36            inputField = document.getElementById("names");            
     37            nameTable = document.getElementById("name_table");
     38            completeDiv = document.getElementById("popup");
     39            nameTableBody = document.getElementById("name_table_body");
     40        }

     41
     42        function findNames() {
     43            initVars();
     44            if (inputField.value.length > 0{
     45                createXMLHttpRequest();            
     46                var url = "getInfo.action?key=" + escape(inputField.value) +"&time=" + new Date().getTime();                        
     47                xmlHttp.open("GET", url, true);
     48                xmlHttp.onreadystatechange = callback;
     49                xmlHttp.send(null);
     50            }
     else {
     51                clearNames();
     52            }

     53        }

     54
     55        function callback() {
     56            if (xmlHttp.readyState == 4{
     57                if (xmlHttp.status == 200{
     58                    setNames(xmlHttp.responseXML.getElementsByTagName("value"));
     59                }
     else {
     60                    clearNames();
     61                }

     62            }

     63        }

     64        
     65        function setNames(the_names) {
     66            clearNames();
     67            var size = the_names.length;
     68            setOffsets();
     69            var row, cell, txtNode;
     70            for (var i = 0; i < size; i++{
     71                var nextNode = the_names[i].firstChild.data;
     72    row = document.createElement("tr");
     73                cell = document.createElement("td");
     74
     75                cell.onmouseout = function() {this.className='mouseOver';};
     76                cell.onmouseover = function() {this.className='mouseOut';};
     77                cell.setAttribute("bgcolor""#FFFAFA");
     78                cell.setAttribute("border""0");
     79                cell.onclick = function() { populateName(this); } ;                             
     80
     81                txtNode = document.createTextNode(nextNode);
     82                cell.appendChild(txtNode);
     83              row.appendChild(cell);
     84                nameTableBody.appendChild(row);
     85            }

     86            createClose();
     87        }

     88
     89  function createClose(){
     90   row = document.createElement("tr");
     91            cell = document.createElement("td");
     92            txtNode = document.createTextNode("close");
     93            cell.appendChild(txtNode);
     94            cell.setAtrribute();
     95            row.appendChild(cell);
     96            nameTableBody.appendChild(row);
     97  }

     98        function setOffsets() {
     99            var end = inputField.offsetWidth;
    100            var left = calculateOffsetLeft(inputField);
    101            var top = calculateOffsetTop(inputField) + inputField.offsetHeight;
    102
    103            completeDiv.style.border = "black 1px solid";
    104            completeDiv.style.left = left + "px";
    105            completeDiv.style.top = top + "px";
    106            nameTable.style.width = end + "px";
    107        }

    108        
    109        function calculateOffsetLeft(field) {
    110          return calculateOffset(field, "offsetLeft");
    111        }

    112
    113        function calculateOffsetTop(field) {
    114          return calculateOffset(field, "offsetTop");
    115        }

    116
    117        function calculateOffset(field, attr) {
    118          var offset = 0;
    119          while(field) {
    120            offset += field[attr]; 
    121            field = field.offsetParent;
    122          }

    123          return offset;
    124        }

    125
    126        function populateName(cell) {
    127            inputField.value = cell.firstChild.nodeValue;
    128            clearNames();
    129        }

    130
    131        function clearNames() {
    132            var ind = nameTableBody.childNodes.length;
    133            for (var i = ind - 1; i >= 0 ; i--{
    134                 nameTableBody.removeChild(nameTableBody.childNodes[i]);
    135            }

    136            completeDiv.style.border = "none";
    137        }

    138
    139    
    </script>
    140  </head>
    141  <body>
    142    <h1>Ajax Auto Complete Example</h1>
    143    <s:form action="search">
    144    <s:textfield label="Input the info which you want to search"
    145   name="key" id="names" cssStyle="height:20;" maxlength="20" onkeyup="findNames();"></s:textfield>
    146    <s:submit label="Search"></s:submit>
    147    </s:form>
    148    <div style="position:absolute;" id="popup">
    149        <table id="name_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0"/>            
    150            <tbody id="name_table_body">
    151            </tbody>
    152        </table>
    153    </div>
    154  </body>
    155</html>
    156
    157


    注:引入struts2的用到的jar  struts.xml文件  修改web.xml文件。

    posted on 2008-08-30 18:53 Gordon 閱讀(332) 評論(0)  編輯  收藏 所屬分類: Ajax

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 99久久久精品免费观看国产| 永久免费看mv网站入口| 亚洲国产成a人v在线| 全免费一级毛片在线播放| 免费大片av手机看片| 亚洲αv久久久噜噜噜噜噜| 少妇高潮太爽了在线观看免费| 黄色一级视频免费| 中文字幕亚洲精品资源网| 宅男666在线永久免费观看| 中文字幕无码日韩专区免费| 涩涩色中文综合亚洲| 亚洲国产精品嫩草影院在线观看| 91网站免费观看| 三级毛片在线免费观看| 亚洲最大天堂无码精品区| 亚洲色无码一区二区三区| 天天天欲色欲色WWW免费| 免费福利在线视频| 国产精品久久久久久亚洲小说| 久久精品亚洲视频| 亚洲成年看片在线观看| 人成午夜免费视频在线观看| 成av免费大片黄在线观看| 男人的天堂av亚洲一区2区| 久久久久亚洲Av无码专| 中文字幕精品亚洲无线码一区应用| 性盈盈影院免费视频观看在线一区| 99麻豆久久久国产精品免费 | 亚洲人成色7777在线观看| 成人免费a级毛片无码网站入口| a级日本高清免费看| 阿v视频免费在线观看| 亚洲无mate20pro麻豆| 亚洲黄色在线电影| 国产亚洲综合色就色| 国产免费观看视频| 免费黄色大片网站| 韩国免费一级成人毛片| 96免费精品视频在线观看| 中文字幕视频在线免费观看|