【问题标题】:Servlet response data for autocomplete自动完成的 Servlet 响应数据
【发布时间】:2011-01-30 00:47:02
【问题描述】:

以下代码是用 PHP 编写的。我想在 Java 中做同样的事情。请告诉我如何在 Java 中生成这种类型的数组或集合。我需要这个来响应 JSON 自动完成。

<?php
$q = strtolower($_GET["q"]);
if (!$q) return;
$items = array(
 "Peter Pan"=>"peter@pan.de",
 "Molly"=>"molly@yahoo.com",
 "Forneria Marconi"=>"live@japan.jp",
 "Master Sync"=>"205bw@samsung.com",
 "Dr. Tech de Log"=>"g15@logitech.com",
 "Don Corleone"=>"don@vegas.com",
 "Mc Chick"=>"info@donalds.org",
 "Donnie Darko"=>"dd@timeshift.info",
 "Quake The Net"=>"webmaster@quakenet.org",
 "Dr. Write"=>"write@writable.com"
);

$result = array();
foreach ($items as $key=>$value) {
 if (strpos(strtolower($key), $q) !== false) {
  array_push($result, array(
   "name" => $key,
   "to" => $value
  ));
 }
}
echo json_encode($result);
?>

更新:

我想要此 PHP 代码的 Java 版本,因为此代码以 JSON 格式返回。在

{name=>"Peter Pan",
 to=>"peter@pan.de";
.....}

如你所见:-

array_push($result, array(
   "name" => $key,
   "to" => $value
  ));

这个jQuery代码可以处理的:-

$('#inputItem').autocomplete('<c:url value="/json/itemautocomplete.do" />', {
            multiple: true,
            mustMatch: true,
            autoFill: true,
            highlight: false,
            scroll: true,
            dataType: "json",
            parse: function(data){
                var array = new Array();
                for(var i = 0; i<data.length; i++){

                    array[array.length] = {data: data[i], value: data[i].name, result: data[i].name};
                                        }
                return array;


            }

        });

此插件在this url 上可用

我知道如何在$.getJSON jQuery 方法中使用JSONArray 来处理JSON 数据。但在这种情况下,那件事不起作用。我想我需要按照上面在这个答案中描述的那样格式化我的数据,以便这个 jQuery 自动完成插件可以理解数据。请告诉我如何才能得到这个...

【问题讨论】:

    标签: java autocomplete


    【解决方案1】:

    在 Java 中,您可以使用 Map&lt;String, String&gt;:

    Map<String, String> items = new HashMap<String, String>();
    items.put("Peter Pan", "peter@pan.de");
    
    String petersAddress = items.get("Peter Pan");
    

    您可以遍历键集:

    for ( String key : items.keySet() ) {
      if ( key.toLowerCase().startsWith(input) ) {
         //add to list of potential matches
      }
    }
    

    【讨论】:

      【解决方案2】:

      感谢您的支持。

      我已经使用以下代码处理了数据:- 在 Servlet 中:-

      LinkedList arr = new LinkedList();
      arr.add("Peter Pan <peter@pan.de>");
      arr.add("Molly <molly@yahoo.com>");
      arr.add("Forneria Marconi <live@japan.jp>");
      
      Iterator iter = arr.iterator();
      while(iter.hasNext()){
           out.println(iter.next());
      }
      

      在 JQuery 中:-

      function itemAutocomplete(){
              $('#inputItem').autocomplete('<c:url value="/json/itemautocomplete.do?mi=' + $('#sltMainItem').val() + '&si=' + $('#sltSubItem').val() + '" />', {
                  json: true
              });
          }
      

      感谢您为我而来 假货

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-11
        • 1970-01-01
        • 1970-01-01
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 2012-12-30
        相关资源
        最近更新 更多