【问题标题】:how to do depedent autocompleter in struts2?如何在struts2中做依赖自动完成?
【发布时间】:2012-03-10 20:13:29
【问题描述】:

我在我的项目中使用 Struts2。我必须在 jsp 中为州和城市使用两个 autocompleter 控件(struts2_tag)。

我已经从表中加载了状态。当我在 jsp 中选择 stateName 时,它​​应该从数据库中检查依赖于 State 的 cityName 并加载到 City 自动完成器标签中。

不知道从自动完成器的onchange方法调用动作类,因为它不起作用。

我当前在 Jsp 中使用带有 Ajax 的框的工作代码:(正常工作)

<s:select name="stateName" list="stateList" onchange="loadCity(this.value)"  listKey="stateId" listValue="stateName" headerKey="-1" headerValue="Select the State"  />

<s:select name="cityName" list="cityList" listKey="cityId" listValue="cityName" headerKey="-1" headerValue="No City Found"/>

function loadCity(id){

              var frm = document.detailsAdd;  
          var URL = "AjaxPopMyCycle.action?stateName="+id;  
              ajaxEditFunctionCall(URL); 
}

function ajaxEditFunctionCall(URL){  
    var frm = document.detailsAdd;  
                 try{
                    xmlHttp=new XMLHttpRequest();
                }catch (e){
                try{
                    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                }catch (e){
                    try{
                        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                    }catch (e){
                        alert("Your browser does not support AJAX!");
                        return false;
                    }
                } 
            } 
            xmlHttp.onreadystatechange=function(){ 
              if(xmlHttp.readyState==4){ 
                    if (xmlHttp.status == 200) { 
                        if(xmlHttp.responseXML != null ){                      
                                showMessage(xmlHttp.responseXML); 
                        }
                    }
                }
            }
            xmlHttp.open("GET", URL, true); 
            xmlHttp.send(URL);
        }
        function showMessage(errorDisplayXML){  
        var frm = document.surveyAdd; 
        var checklist=document.detailsAdd.cityName;
            checklist.options.length=0;  
            if(xmlHttp.readyState==4){
    if(errorDisplayXML.getElementsByTagName("rootElement")[0]!=null){  
    var rootElement  = errorDisplayXML.getElementsByTagName("rootElement")[0];
    var location = rootElement.getElementsByTagName("Message"); 
    var locArr = location[0]; 
    var locArr = " ";
    var tempArr;
    var tempArr1; 
    for(var i=0; i<location.length; i++){ 
        tempArr = "";
        tempArr1 = "";
        locArr = location[i];   
    tempArr = locArr.getElementsByTagName("cityId")[0].firstChild.nodeValue;   
    tempArr1 = locArr.getElementsByTagName("cityName")[0].firstChild.nodeValue;  
    checklist.options[i]= new Option(tempArr1,tempArr); 
    }       
    }else{
    alert("errorDisplayXML Contains NULL");
    }
}
} 

我需要在 sx:autocompleter 标签中做同样的事情。

所以,任何人都可以帮我提出任何想法来完成这项任务。提前致谢!

【问题讨论】:

    标签: jsp struts2


    【解决方案1】:

    您需要定义一个函数,您可以在第一个下拉菜单的特定事件上调用该函数。 根据选择的值,将该值传递给动作类,创建一个列表并使用 JSON ()user S2-Json 插件传递结果。这里是函数的概要

    function searchDistrict()
    { 
            dropdownreset(document.getElementById("district"));
            var selectedState = document.getElementById("stateList");
            var statedata = selectedState.options[selectedState.selectedIndex].value;
            var formInput='state='+statedata;       
            $.getJSON('search/searchDistrict',formInput,function(data) {
                $('.result').html('' + data.districts + '');
                $.each(data.districts,function(index, value){
                var districtid = document.getElementById("district_");
                var option=new Option(value,value);
                try{
                    districtid.add(option);
                }
                catch(e){
                    districtid.appendChild(option);
                }
                });
                });
        }
    

    【讨论】:

    • 谢谢!!。我已经尝试使用普通的选择框并加载到依赖的选择框(如 state>>city)。但我想为 标签做这件事。所以它的属性中不支持 onchange,onclick 事件。如何处理这个动作?
    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多