我的设置:
我想调用一个从UI接受字符串的java方法,返回一个JSON字符串。此方法需要5秒以上的时间来计算并返回JSON字符串。当我使用UI作为参数输入时,此方法甚至不被调用:我确认这是因为某些文件是在本地创建的,而这些文件没有被创建。
我的项目是使用 AngularJS with Spring 设置的,该端口工作正常。
Setter方法:
public void setBrand(String brand) {
this.brand = AmazonReview.getAmazonReview(this.brand);
}
Getter方法:
public String getBrand() {
return brand;
}
AmazonReview方法 // 这是执行所有计算并返回JSON
的方法public static String getAmazonReview(String s){
...;
Process p1 = Runtime.getRuntime().exec("./something.pl com " + id);
...;
JSONObject obj = new JSONObject();
obj.put("product1", l1);
return obj.toJSONString();
}
前端
我只是从用户那里获取输入(在文本框中)这里没什么好看的!
<form novalidate class="form-horizontal" ng-submit="save()">
<div class="control-group">
<label class="control-label" for="brand">Brand</label>
<div class="controls">
<input type="text" ng-model="brand.brand" id="brand"/>
</div>
</div>
<fieldset>
<legend>Brand Description</legend>
<div class="control-group">
<label class="control-label" for="brandDescription">Brand Description</label>
<div class="controls">
<input type="text" ng-model="brand.brandDescription.brandDescription" id="brandDescription"/>
</div>
</div>
</fieldset>
<button id="save" class="btn btn-primary">Save</button>
</form>
App.js
angular.module("sprang", ["sprang.services"]).
config(function ($routeProvider) {
$routeProvider
.when('/brands', {templateUrl: '/views/brands/list.html', controller: BrandListController})
.when('/brands/:brandId', {templateUrl: '/views/brands/detail.html', controller: BrandDetailController});
});
function BrandListController($scope, Brand) {
$scope.brands = Brand.query();
$scope.deleteBrand = function(brand) {
brand.$delete(function() {
$scope.brands.splice($scope.brands.indexOf(brand),1);
toastr.success("Deleted");
});
}
}
function BrandDetailController($scope, $routeParams, $location, Brand) {
var brandId = $routeParams.brandId;
if (brandId === 'new') {
$scope.brand = new Brand();
} else {
$scope.brand = Brand.get({brandId: brandId});
}
$scope.save = function () {
if ($scope.brand.isNew()) {
$scope.brand.$save(function (brand, headers) {
toastr.success("Created");
var location = headers('Location');
var id = location.substring(location.lastIndexOf('/') + 1);
$location.path('/brands/' + id);
});
} else {
$scope.brand.$update(function() {
toastr.success("Updated");
});
}
};
}
我的问题:
1)如果我用返回“Hello”替换方法代码; 我的界面显示Hello 。
2)我只想将JSON(String)显示回前端。但它甚至没有运行方法让我这样做。
感谢您的帮助!
总结一下,当我在eclipse(来自另一个java程序)中调用我的慢速java方法时,我得到了预期的JSON 但是当我对UI(AngularJS)做同样的事情时,该方法未被调用。