JQuery 使用标签和值对自动完成

JQuery Autocomplete using Label and Value pairs

我正在尝试在我的 jsp 页面上实现 jquery 自动完成功能。想法是,在加载时,将通过从 db table 和 return 中检索数据来填充列表并将其用作源。

下面是我的 Distributor Class,我想使用 distributorName 作为 Label,distributorId 作为 Value。

分销商Java对象Class

public class DistributorObject {

    private BigInteger distributorId;
    private String distributorName;
    private String distributorNameUpper;

...Getters and Setters

问题是如何正确地将这两个值设置为 javascript 变量的标签和值属性?

当前JSP脚本

$(function() {
    var availableTutorials = [];
    <c:forEach items="${allDistributorsList}" var="distributor" varStatus="status">
        var distrib = {label: ${distributor.distributorName}, value: ${distributor.distributorId}};
        availableTutorials.push(distrib);
    </c:forEach>
    $( "#automplete-1" ).autocomplete({
        source: availableTutorials
    });
});

这段特定的代码不起作用:

var distrib = {label: ${distributor.distributorName}, value: ${distributor.distributorId}};

但如果我用实际的字符串值替换它,它就会起作用。如:

var distrib = {label: "zzzz", value: "1"};

另外,在查看页面源代码时,我可以看到 ${distributor.distributorName} 已正确填充。所以我很困惑为什么我不能将它用作 属性 值。

谢谢,

菲利普

在您的浏览器控制台中,您应该会看到类似 Uncaught SyntaxError: Unexpected identifier.

的错误

看起来这些是字符串值,因此您必须将它们括在 '' 中,如下所示(如果 distributorId 是数值,则无需将其括在 '' 就像一个字符串文字)。

var distrib = {
    label: '${distributor.distributorName}',
    value: '${distributor.distributorId}'
};