如何将jquery-ui的自动完成选择映射到POST上的Java类

时间:2016-11-09 10:44:16

标签: java jquery json jquery-ui pojo

假设我有这个自定义Java类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类Club{ value : club.id, label : club.name })。 在我提交表单之前,此工作正常。

我正在使用Spring MVC Framework,这是我的控制器:

@RequestMapping(value = "someMapping", method = RequestMethod.POST)
public String someMethod(HttpSession session, Model model, @ModelAttribute("someForm") SomeForm form)
{
    jada jada ...
} 

其中SomeForm包含字段private Club clubChoice。我想将我选择的JSON对象映射到该字段。我怎样才能做到这一点?非常感谢。

1 个答案:

答案 0 :(得分:0)

嗯,我花了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" />