2013-09-23 23 views
0

我寫了關於自動完成spring mvc和jquery/json的示例。我使用spring和hibernate從json獲取對象值,但是當我搜索它不起作用時。我已經從數據庫,但自動完成不列表值下拉列表,請任何人都幫我這個問題。Spring MVC Autocomplete無法從json獲得價值

  • 我的用戶

    private Integer id; 
    private String name; 
    private String country; 
    public User() { 
    } 
    public User(String name, String country) { 
    this.name; 
    this.country; 
    } 
    // getter and setter 
    ... 
    
  • 我的服務(UserServiceImpl.java)

    @Repository 
    public class UserRepositoryImpl implements UserRepository { 
        @Autowired 
        private SessionFactory sessionFactory; 
    
        @SuppressWarnings("unchecked") 
        public List<String> getCountryList(String query) { 
    
         List<String> countries = new ArrayList<String>(); 
    
         Query queryList = sessionFactory.getCurrentSession().createQuery("FROM user u WHERE u.country LIKE '%"+query+"%'"); 
         countries = queryList.list(); 
         query = query.toLowerCase(); 
    
         return countries; 
        } 
    } 
    
  • 我的控制器(UserController中):

    @Controller 
        public class UserController { 
    
        @Autowired 
        private UserService userService; 
    
        @RequestMapping(value = "/index", method = RequestMethod.GET) 
        public ModelAndView index() { 
         User userForm = new User(); 
         return new ModelAndView("user", "userForm", userForm); 
        } 
    
        @RequestMapping(value = "/get_country_list", method = RequestMethod.GET, headers="Accept=*/*") 
        public @ResponseBody List<String> getCountryList(@RequestParam("term") String query) { 
         List<String> countryList = userService.getCountryList(query); 
         return countryList; 
        } 
    
  • 我Ĵ SP(user.jsp)

    <body> 
    <h2>Spring MVC Autocomplete with JQuery &amp; JSON example</h2> 
    <form:form method="post" action="save.html" modelAttribute="userForm"> 
    <table> 
    <tr> 
        <th>Name</th> 
        <td><form:input path="name" /></td> 
    </tr> 
    <tr> 
        <th>Country</th> 
        <td><form:input path="country" id="country" /></td> 
    </tr> 
    <tr> 
        <td colspan="2"> 
         <input type="submit" value="Save" /> 
         <input type="reset" value="Reset" /> 
        </td> 
    </tr> 
    </table> 
    <br /> 
    
    </form:form> 
    
    <script type="text/javascript"> 
        function split(val) { 
         return val.split(/,\s*/); 
        } 
        function extractLast(term) { 
         return split(term).pop(); 
        } 
    
        $(document).ready(function) { 
         $("#country").autocomplete({ 
          source: function (request, response) { 
          $.getJSON("${pageContext. request. contextPath}/get_country_list.html", { 
           term: extractLast(request.term) 
          }, response); 
         }, 
         search: function() { 
          // custom minLength 
          var term = extractLast(this.value); 
          if (term.length < 1) { 
           return false; 
          } 
         }, 
         focus: function() { 
         // prevent value inserted on focus 
          return false; 
         }, 
         select: function (event, ui) { 
          var terms = split(this.value); 
          // remove the current input 
          terms.pop(); 
          // add the selected item 
          terms.push(ui.item.value); 
          // add placeholder to get the comma-and-space at the end 
          terms.push(""); 
          this.value = terms.join(", "); 
          return false; 
         } 
         }); 
        }); 
    </script> 
    
    </body> 
    

我由螢火蟲和JSON響應具有測試自動填充值成功

Object { id=1, name="john", country="london", more...} 
Object { id=2, name="johanson", country="london", more...} 

並且它具有下拉但是值在自動填充不顯示。請幫我...

回答

0

在UserRepositoryImpl.java文件更改查詢如下

查詢queryList = sessionFactory.getCurrentSession()的createQuery(「選擇u.country從用戶u WHERE u.country LIKE「% 「+查詢+」 %'「);