我写了关于autocomplete 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 & 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...}
它有下拉列表,但值不会显示在自动填充中。请帮帮我......
答案 0 :(得分:0)
在UserRepositoryImpl.java文件中,将查询更改为
查询queryList = sessionFactory.getCurrentSession()。createQuery(“选择u.country FROM user u WHERE u.country LIKE'%”+ query +“%'”);