无法将数据从 cline 发送到服务器
fails to send data from cline to server
我尝试从我的 js 调用我的 java 后端
angular js (http://localhost:8082/dev/index.html#/
):
self.submit = function() {
console.log("in voice prompt component - submit");
console.log(self.voice);
$http.put('localhost:8082/api/Voices/updateVoice', self.voice).then(
function successCallback(response) {
self.voices = response.data;
},
function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
console.log(response);
});
}
java(应回应localhost:8082/api/Voices/updateVoice
@Path("/Voices")
public class VoicesOperation {
...
@Path("/updateVoice")
@PUT
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public void updateVoice(VoiceBl voice) throws Exception {
fillVoicesSnapshot();
我得到这个 js 异常:
TypeError: 'caller' and 'arguments' are restricted function properties and cannot be accessed in this context.
at Function.remoteFunction (<anonymous>:3:14)
at errorCallback (http://localhost:3002/public/js/components/voice-form-component.js:54:29)
at http://localhost:3002/bower_components/angular/angular.min.js:133:460
at m.$eval (http://localhost:3002/bower_components/angular/angular.min.js:147:313)
at m.$digest (http://localhost:3002/bower_components/angular/angular.min.js:144:421)
at m.$apply (http://localhost:3002/bower_components/angular/angular.min.js:148:78)
at HTMLButtonElement.<anonymous> (http://localhost:3002/bower_components/angular/angular.min.js:282:247)
at cg (http://localhost:3002/bower_components/angular/angular.min.js:38:299)
at HTMLButtonElement.d (http://localhost:3002/bower_components/angular/angular.min.js:38:246)
问题出在你的资源文件上,你没有发送任何东西,也没有使用任何东西。如果您要发送回复,那么您的 return 类型应该是 Response,并且您还需要消费。
@Path("/Voices")
public class VoicesOperation {
...
@Path("/updateVoice")
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public Response updateVoice(VoiceBl voice) throws Exception {
Voice voice = fillVoicesSnapshot();
return Response.status(Status.CREATED)
.entity(voice)
.build();
}
}
或者,如果您要发送语音类型,那么您的 return 类型应该是语音。
@Path("/Voices")
public class VoicesOperation {
...
@Path("/updateVoice")
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public Voice updateVoice(VoiceBl voice) throws Exception {
return fillVoicesSnapshot();
}
}
我尝试从我的 js 调用我的 java 后端
angular js (http://localhost:8082/dev/index.html#/
):
self.submit = function() {
console.log("in voice prompt component - submit");
console.log(self.voice);
$http.put('localhost:8082/api/Voices/updateVoice', self.voice).then(
function successCallback(response) {
self.voices = response.data;
},
function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
console.log(response);
});
}
java(应回应localhost:8082/api/Voices/updateVoice
@Path("/Voices")
public class VoicesOperation {
...
@Path("/updateVoice")
@PUT
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public void updateVoice(VoiceBl voice) throws Exception {
fillVoicesSnapshot();
我得到这个 js 异常:
TypeError: 'caller' and 'arguments' are restricted function properties and cannot be accessed in this context.
at Function.remoteFunction (<anonymous>:3:14)
at errorCallback (http://localhost:3002/public/js/components/voice-form-component.js:54:29)
at http://localhost:3002/bower_components/angular/angular.min.js:133:460
at m.$eval (http://localhost:3002/bower_components/angular/angular.min.js:147:313)
at m.$digest (http://localhost:3002/bower_components/angular/angular.min.js:144:421)
at m.$apply (http://localhost:3002/bower_components/angular/angular.min.js:148:78)
at HTMLButtonElement.<anonymous> (http://localhost:3002/bower_components/angular/angular.min.js:282:247)
at cg (http://localhost:3002/bower_components/angular/angular.min.js:38:299)
at HTMLButtonElement.d (http://localhost:3002/bower_components/angular/angular.min.js:38:246)
问题出在你的资源文件上,你没有发送任何东西,也没有使用任何东西。如果您要发送回复,那么您的 return 类型应该是 Response,并且您还需要消费。
@Path("/Voices")
public class VoicesOperation {
...
@Path("/updateVoice")
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public Response updateVoice(VoiceBl voice) throws Exception {
Voice voice = fillVoicesSnapshot();
return Response.status(Status.CREATED)
.entity(voice)
.build();
}
}
或者,如果您要发送语音类型,那么您的 return 类型应该是语音。
@Path("/Voices")
public class VoicesOperation {
...
@Path("/updateVoice")
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public Voice updateVoice(VoiceBl voice) throws Exception {
return fillVoicesSnapshot();
}
}