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

Posted

技术标签:

【中文标题】如何将 jquery-ui 的自动完成选择映射到 POST 上的 Java 类【英文标题】:How to map jquery-ui's autocomplete choice to a Java class on POST 【发布时间】:2017-03-23 03:36:33 【问题描述】:

假设我有这个自定义 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 是对应于上述Java 类Club ( value : club.id, label : club.name ) 的JSON 对象数组。 这工作正常,直到我提交表格。

我正在使用 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 对象映射到该字段。我怎样才能做到这一点?非常感谢。

【问题讨论】:

【参考方案1】:

好吧,我又花了 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" />

【讨论】:

以上是关于如何将 jquery-ui 的自动完成选择映射到 POST 上的 Java 类的主要内容,如果未能解决你的问题,请参考以下文章

无法将 Jquery-ui 自动完成链接到 JSON 文件

Jquery-ui自动完成选定的值

从 Jquery-ui 自动完成到 typeahead.js

带有嵌套属性的 Rails Jquery-ui 自动完成

如何在引导侧导航顶部显示 jQuery-ui 自动完成?

如何在选项选择上使用 jquery 自动完成来进行回发?