我正在使用POST使用angularjs从点击事件中获取数据。我想我已经写了大多数代码,但是运行查询时出现“无效字符”错误。我认为当我从javascript抓取变量时,它可能与类型转换有关。
这是我的Java文件帖子
@POST
@Path("module")
@Consumes(MediaType.APPLICATION_JSON)
public List<ModuleProcCount> getInput(int jobId) throws IOException{
try (Dbc dbc = vehmPool.getDbc()){
List<ModuleProcCount> pusher = statements.inMod(dbc, jobId);
return pusher;
}
}
此功能或我的帖子
$scope.sendJobId = function(jobId) {
$http.post("rest/performance/module", jobId).then(function(response){
$scope.pusher = response.data;
for (var i = 0; i < $scope.pusher.length; i++) {
var p = $scope.puller[i];
console.log("modName: " + p.modName);
console.log("modClass: " + p.cellClass);
console.log("modData: " + p.modCount);
}
});
这是我的HTML代码,里面有角代码。
<table id="Table" class="JobID-table" style="text-align:center" >
<tr class="table-Header">
<th>JOB ID</th>
<th>TIME FOR ALL MODULES(MILLISECONDS)</th>
</tr>
<tr class="jobID-Table-tr" ng-repeat="p in puller | orderBy : '-modCount'">
<td ng-click="sendJobId(p.modName)" class={{p.cellClass}}>
{{p.modName}}
</td>
<td class={{p.cellClass}}>
{{p.modCount}}
</td>
</tr>
</table>
答案 0 :(得分:1)
您的Java方法设置为使用JSON(@Consumes(MediaType.APPLICATION_JSON)
)。这意味着JAX-RS尝试将POST请求的主体解析为JSON对象,然后将其映射到使用者函数的参数类型,在本例中为String
。
由于您实际上并未通过POST请求发送JSON对象,因此应告知JAX-RS您想从有效负载中接收原始文本:
@Consumes(MediaType.TEXT_PLAIN)
或者,您可以使用JSON!由于您提到的参数是整数,因此本示例使用一个JSON对象,该对象带有一个名为jobId
的单个整数参数:
/**
* This class is used by JAX-RS to parse to and from JSON. The field
* names used here (and by extension the getters and setters) should
* match those used in your JSON.
*/
class InputRequest {
int jobId;
public String getJobId() {
return jobId;
}
public void setJobId(int jobId) {
this.jobId = jobId;
}
}
@POST
@Path("module")
@Consumes(MediaType.APPLICATION_JSON)
public List<ModuleProcCount> getInput(InputRequest reqPayload) throws IOException {
int jobId = reqPayload.getJobId();
}
在客户端,角度自动将为有效负载传递的对象转换为JSON字符串,并为您设置ref的标头({{3}})。
Content-type