Как перезагрузить автозаполнение struts2-jquery X со значением, выбранным из другого автозаполнения struts2-jquery Y

У меня есть два поля автозаполнения strut2 Jquery с именем x, y на моей странице jsp. Если я изменю x , то автоматически y также должен измениться в соответствии с выбранным значением x. В тегах struts dojo я использовал темы прослушивания для перезагрузки. Но strut2 jquery не может перезагрузить.

мой код

             <sj:autocompleter
                id="mapNameList"
                name="map_name"
                list="%{mapNameList}"
                selectBox="true"
                selectBoxIcon="true"
                onChangeTopics="autocompleteChange"
                onFocusTopics="autocompleteFocus"
                onSelectTopics="autocompleteSelect"
                />
        <label for="map_type">MapType: </label>
            <sj:autocompleter
                id="mapTypeList"
                name="map_type"
                list="%{mapTypeList}"
                selectBox="true"
                selectBoxIcon="true"
                onChangeTopics="autocompleteChange"
                onFocusTopics="autocompleteFocus"
                onSelectTopics="autocompleteSelect"
                />

person Muralidharan    schedule 04.09.2013    source источник


Ответы (1)


Если вы предпочитаете автозаполнение json, вы можете сделать следующее:

определить onSelectTopics первого на определенное значение, например

onSelectTopics="/mapNameListChange"

определить для второго

listenTopics="/mapNameListChange"

создайте функцию типа:

$.subscribe("/mapNameListChange",function(event, data){
            //clear the children autocompleters
            jQuery('#mapTypeList').val("");
            jQuery('#mapTypeList_widget').val("");
            var ui = event.originalEvent.ui;
            if (ui.item && ui.item.value.length > 0) {
                setJQueryAutocompleterURL(jQuery('#mapTypeList_widget'),"your json request", "extraparameter=" + ui.item.value, "the list used in the json", "mapTypeList", "map_type", "/mapNameListChange", "/mapTypeListChange");
            };
        },null);

где setJQueryAutocompleterURL — еще одна функция

function setJQueryAutocompleterURL(widget,href, hrefparameter, list, id, name, selectTopics, listenTopics) {

        var options_auto_iban_widget = {};
        options_auto_iban_widget.hiddenid = "mapTypeList";
        options_auto_iban_widget.selectBox = true;
            options_auto_iban_widget.selectBoxIcon= true;
        options_auto_iban_widget.forceValidOption = true;
        options_auto_iban_widget.onselecttopics = "/autoDebtorIbanChange";
        options_auto_iban_widget.list = list;
        options_auto_iban_widget.listkey = "id";
        options_auto_iban_widget.listvalue = "name";
        options_auto_iban_widget.jqueryaction = "autocompleter";
        options_auto_iban_widget.id = id;
        options_auto_iban_widget.name = name + "_widget";
        options_auto_iban_widget.href = href+"?"+hrefparameter;
        options_auto_iban_widget.listentopics = "/autoDebtorBicChange"; 
        jQuery.struts2_jquery_ui.bind(widget,options_auto_iban_widget);
    }

Затем у вас будет дополнительный параметр, который нужно получить в качестве параметра вашего вызова json для фильтрации результата.

person Rydermark    schedule 10.10.2013