如何将 jquery-ui 的自动完成选项映射到 POST 上的 Java class
How to map jquery-ui's autocomplete choice to a Java class on POST
说我有这个习惯 Java class Club.java
:
public class Club
{
private Integer id;
private String name;
/* getters, setters */
}
现在 jquery-ui 自动完成代码:
var autocomplete = $('#clubs').autocomplete({
source: currentClubs
}).data("autocomplete");
if (autocomplete != undefined)
{
autocomplete._renderItem = function(ul, item) {
return $("<li>").attr('data-value', item.value).append(item.label).appendTo(ul);
};
}
其中 currentClubs
是 JSON 对象的数组,对应于上面的 Java class Club
( { value : club.id, label : club.name }
)。
在我提交表格之前,这一切正常。
我正在使用 Spring MVC 框架,这是我的控制器:
@RequestMapping(value = "someMapping", method = RequestMethod.POST)
public String someMethod(HttpSession session, Model model, @ModelAttribute("someForm") SomeForm form)
{
jada jada ...
}
其中 SomeForm
包含字段 private Club clubChoice
。我想将我选择的 JSON 对象映射到该字段。我怎样才能做到这一点?非常感谢。
好吧,我又花了 10 分钟才弄清楚该怎么做。
我更改了这部分:
var autocomplete = $('#clubs').autocomplete({
source: currentClubs
}).data("autocomplete");
对此:
var autocomplete = $('#clubs').autocomplete({
source: currentClubs,
select: function (event, ui) {
$('#club-id').val(ui.item.id);
}
}).data("autocomplete");
其中 clubId
是隐藏输入:
<form:input path="club.name" name="club-name" id="club-name" />
<form:hidden path="club.id" name="club-id" id="club-id" />
说我有这个习惯 Java class Club.java
:
public class Club
{
private Integer id;
private String name;
/* getters, setters */
}
现在 jquery-ui 自动完成代码:
var autocomplete = $('#clubs').autocomplete({
source: currentClubs
}).data("autocomplete");
if (autocomplete != undefined)
{
autocomplete._renderItem = function(ul, item) {
return $("<li>").attr('data-value', item.value).append(item.label).appendTo(ul);
};
}
其中 currentClubs
是 JSON 对象的数组,对应于上面的 Java class Club
( { value : club.id, label : club.name }
)。
在我提交表格之前,这一切正常。
我正在使用 Spring MVC 框架,这是我的控制器:
@RequestMapping(value = "someMapping", method = RequestMethod.POST)
public String someMethod(HttpSession session, Model model, @ModelAttribute("someForm") SomeForm form)
{
jada jada ...
}
其中 SomeForm
包含字段 private Club clubChoice
。我想将我选择的 JSON 对象映射到该字段。我怎样才能做到这一点?非常感谢。
好吧,我又花了 10 分钟才弄清楚该怎么做。
我更改了这部分:
var autocomplete = $('#clubs').autocomplete({
source: currentClubs
}).data("autocomplete");
对此:
var autocomplete = $('#clubs').autocomplete({
source: currentClubs,
select: function (event, ui) {
$('#club-id').val(ui.item.id);
}
}).data("autocomplete");
其中 clubId
是隐藏输入:
<form:input path="club.name" name="club-name" id="club-name" />
<form:hidden path="club.id" name="club-id" id="club-id" />