Spring MVC Autocomplete не может получить значение от JSON

0

Я пишу пример об автозаполнении spring mvc и jquery/json. Я использую spring и hibernate, получаю значение объекта от 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;
        }
    
  • Мой jsp (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>
    

У меня есть автозаполнение теста с помощью значений ответа firebug и json

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

и он имеет раскрывающееся меню, но значение не отображается в автозаполнении. Пожалуйста, помогите мне...

Теги:
jsp
spring-mvc
autocomplete

1 ответ

0

В файле UserRepositoryImpl.java измените запрос, как показано ниже.

Запрос queryList = sessionFactory.getCurrentSession(). CreateQuery ("Выберите u.country FROM user u WHERE u.country LIKE '%" + query + "%'");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню