如何填充Jersey Web Service的下拉列表

时间:2013-04-09 20:20:40

标签: jquery web-services rest jersey

我开始从this article了解泽西网络服务,并创建了一个。我想要做的下一件事是在我的网页上填写一个从该服务返回的数据的下拉菜单。

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

  

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时,我看到该服务返回一个字符串。

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

2 个答案:

答案 0 :(得分:1)

根据Pavel Bucek的说法:

  

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

     

它根本不影响wadl的产生。它与XML Schema有关   在这些情况下,有一种预期。

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

答案 1 :(得分:0)

我猜你不能返回一个String数组。见https://stackoverflow.com/a/5393792/461499