检查JSON填充Struts自动完成器

时间:2015-12-31 10:39:05

标签: json autocomplete struts2

我有一个使用Struts自动完成器填充JSON的选择框:

<sj:autocompleter 
    id="stop" 
    name="stopId"
    href="%{stopsUrl}" 
    list="stops" 
    listValue="stopName" 
    listKey="stopId" 
    autocomplete="true"
    loadMinimumCount="2"
    delay="200"
    tabindex="1"
    onSelectTopics="onStopSelected"
/> 

这向stopsUrl发出了一个Ajax请求,该请求返回stops个对象的列表,每个对象都有stopIdstopName以及stopType }。 我需要在某处保存stopType(我猜通过使用JQuery data函数),然后当用户选择停止时,onStopSelected函数将检索stopType和用它做点什么。

所以我认为我需要检查JSON响应中的数据以获得每个停靠点的stopType。但我怎么能访问这个?我需要订阅哪个活动?是否可以使用Struts?

1 个答案:

答案 0 :(得分:0)

也许有更好的方法,但我已经这样做了。

我已删除问题中的第onSelectTopics="onStopSelected"行,而是使用(旧)jQuery来读取autocompleteopen事件中的JSON:

$( "#stop_widget" ).live( "autocompleteopen", function() {
    var stops = $(this).data("autocomplete").response.caller.arguments[0].stops;
    var stopTypes = {};
    for (var i = 0; i < stops.length; i++) {
        stopTypes[stops[i].stopId] = stops[i].stopType;
    }
    $("#stop").data("stopTypes", stopTypes);
});

然后在autocompleteselect事件中,我可以访问stopType

$("#stop_widget").bind( "autocompleteselect", function(event,data){
    var selectedStopId = data.item.key;
    var stopTypes = $("#stop").data("stopTypes");
    var selectedStopType = stopTypes[selectedStopId];
    // do something with the selectedStopType
});