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

时间:2015-02-03 03:43:37

标签: jquery autocomplete

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

以下是我的经销商类,我想将distributorName用作Label,将distributorId用作Value。

分发服务器Java对象类

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}};

但是如果我用实际的String值替换它,它会起作用。如:

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

同样在查看页面源时,我可以看到$ {distributor.distributorName}已正确填充。所以我不知道为什么我不能将它用作财产价值。

谢谢,

菲利普

1 个答案:

答案 0 :(得分:0)

在浏览器控制台中,您会看到类似Uncaught SyntaxError: Unexpected identifier的错误。

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

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