【发布时间】:2014-11-04 19:43:48
【问题描述】:
我的表格如下:
<form id="form1" name="form1">
<fieldset>
<ol>
<li>
<label>Project:</label>
<select id="project" name="project" required></select>
</li>
</ol>
<input type="button" onclick="request();">
</fieldset>
</form>
我在输入按钮的 onclick 事件上创建了一个 request() 函数。我将输入类型更改为按钮,因为我不想重新加载页面。
请求函数使用 RestEasy REST.Request 类来创建自定义休息请求。我在 REST.Request 对象上使用了 setEntity,但我不知道如何在服务器端访问该信息。
下面是请求函数:
request: function() {
var myRequest = new REST.Request();
var form1 = document.forms["form1"];
var projectTxt = form1.elements["project"].value;
myRequest.setURI(REST.apiURL + "/request/item");
myRequest.setMethod("GET");
myRequest.setEntity({project:projectTxt});
myRequest.execute(function(status, request, entity) {
if (status === 200 && request.readyState === 4) {
// entity is always null
sessionStorage.setItem("project", entity);
console.log("entity=" + entity);
}
});
},
在上述代码中,传递给 myRequest.execute() 的函数中的实体始终为空。
这是Java代码:
@Path("item")
@GET
public String itemFormatRequest(@FormParam("project") String project)
{
// project is always null
return "blarg!!! project is " + project;
}
在上面的代码中,项目为空。我尝试过使用 @QueryParam ,但这也不起作用。我只是使用不正确还是我还缺少其他东西?通过在 javascript 和 java 代码中将 @GET 更改为 @POST,我做了很多试验和错误。还尝试在 java 代码中添加 @Consumes("application/x-www-form-urlencoded") ,但没有成功。
我唯一开始工作的就是向 REST.request 对象添加查询参数,如下所示:
myRequest.addQueryParameter("project", projectTxt);
然后我可以使用 (@QueryParam("project") String project) 来检索它。
谢谢!
【问题讨论】:
标签: java javascript rest resteasy