我从这篇文章开始了解 Jersey Web 服务,并创建了一个。接下来我要做的是根据从该服务返回的数据在我的网页上填充一个下拉菜单。
但是,每次单击更多按钮时,我都会在运行 Web 服务的控制台上收到此错误消息:
java.lang.IllegalAccessException:类 com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator$8 无法访问带有修饰符“受保护”的类 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
在浏览器中打开时,我看到服务返回一个字符串。
我不确定我在做什么错。你能从上面的代码中弄清楚吗?