【问题标题】:How to populate dropdown from a Jersey WebService如何从 Jersey WebService 填充下拉列表
【发布时间】:2013-04-09 20:20:40
【问题描述】:

我从 this article 开始了解 Jersey Web 服务,并创建了一个。接下来我要做的是根据从该服务返回的数据在我的网页上填充一个下拉菜单。

但是,每次单击更多按钮时,我都会在运行 Web 服务的控制台上收到此错误消息:

java.lang.IllegalAccessException:com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator$8 类无法访问带有修饰符“protected”的 javax.ws.rs.core.Response 类的成员

Service java 代码的简化版本如下所示:

@Path("/abcResource")
public class AbcResource{


    @GET
    @Path("showAllStr")
    @Produces(MediaType.TEXT_PLAIN)
    public String[] getAllStr() {
        String[] result={"option1", "option2","option3"};
        return result
    }




    //This works!! give me results on http://localhost:8080/rest/abcResource/showAll  in browser that shows that service is running fine

    @GET
    @Path("showAll")
    @Produces(MediaType.TEXT_PLAIN)
    public String showAllStr() {

        String result="blah lblah";

        return result
    }

}

JavaScript 代码:

<script type="text/javascript">

    var offset = 0;
    var howMany = 5;

    $(document).ready(function() {
        $("#btnMore").click(function() {
            // fetch some more records from the server side
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "http://localhost:8080/rest/abcResource/showAllStr",

                success: onSuccess,
                error: onError
            });
        });
    });

    function onSuccess(result) {
        // process web service return data
        // populate ul with data
        $("#datalist").empty();
        var strings = result.d;
        for (var i = 0; i < strings.length; i++)
            $("#datalist").append("<li>" + strings[i] + "</li>");
        // move offset
        offset += howMany;
    }

    function onError(result) {
        // ajax call failed
        alert(result.status + ': ' + result.statusText);
    }
</script>

应该打开下拉列表的 HTML 代码:

<form id="form1" runat="server">
    <div>
        <ul id="datalist"></ul>
        <br />
        <input type="button" id="btnMore" value="more" />
    </div>
</form>

我在 Chrome 或 Firefox 中的下拉列表中没有任何内容,但是当我在浏览器中打开 http://localhost:8080/rest/abcResource/showAll 时,我看到服务返回了一个字符串。

我不确定我在做什么错。你能从上面的代码中弄清楚吗?

【问题讨论】:

  • 您是否在浏览器中使用 AJAX 控制台? Chrome 和 Safari 内置,Firefox 使用 Firebug。检查这将显示来自 Web 服务的响应是否损坏。鉴于错误消息,当然,我会专注于 Java 方面。

标签: jquery web-services rest jersey


【解决方案1】:

根据 Pavel Bucek 的说法:

这只是小问题,已经修复 - 日志级别 此消息已更改为 FINE 而不是 SEVERE..; 1.10不会 不再产生这些烦人的消息。

它根本不影响 wadl 生成。它与 XML Schema 有关 代,并且在这些情况下是预期的。

来源:http://java.net/projects/jersey/lists/users/archive/2011-10/message/117

【讨论】:

    【解决方案2】:

    我猜你不能返回一个字符串数组。看这里https://stackoverflow.com/a/5393792/461499

    【讨论】:

    • 好的,是否有替代方法来填充下拉列表?该服务正在执行一些复杂的任务,我试图在这里展示一个简化版本。我需要从服务返回的数据中填充下拉列表。
    • 您查看链接中的答案和问题了吗?
    • 请阅读它,请参阅 cmets 对您提到的问题的回答,人们抱怨它不起作用,尽管 OP 以某种方式接受了它。我会尝试它是否适合我在此处填充下拉列表和报告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多