Java AngularJs将值发送到Struts2
我在struts2动作中接收angularJS的值时遇到一些问题 目标是在旋转木马中接收当前图像的索引 selectArm.jspJava AngularJs将值发送到Struts2,java,angularjs,post,struts2,carousel,Java,Angularjs,Post,Struts2,Carousel,我在struts2动作中接收angularJS的值时遇到一些问题 目标是在旋转木马中接收当前图像的索引 selectArm.jsp var app = angular.module('menuAPP', ['ui.bootstrap']); app.controller('mainController', function($scope, $http, $window, $location) { $scope.hideError=true;
var app = angular.module('menuAPP', ['ui.bootstrap']);
app.controller('mainController', function($scope, $http, $window, $location) {
$scope.hideError=true;
$scope.show = function() {
$scope.currentIndex = $('div.active').index() + 1;//Carousel index
var params = "NSlider :"+ $scope.currentIndex;
var data = angular.toJson(params)
$http({
method: 'post',
url: 'showArm',
data: 'NSlider =' + data
}).success(function(response)
{
post("formShowBrazo");
});
};
<body>
<script src="lib/threejs/three.min.js"></script>
<script src="lib/threejs/OrbitControls.js"></script>
<script src="lib/threejs/dat.gui.min.js"></script>
<script src="lib/threejs/stats.min.js"></script>
<script src="js/webGL.js"></script>
<%
out.println(session.getAttribute("id_brazo"));
%>
<div id='container' width=800, height=600>
</body>
ArmAction.java
import javax.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
public class BrazoAction implements Action
{
private static final Logger log = LogManager.getLogger(BrazoAction.class);
private String NSlider;
public String execute() throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("forward","sBrazo");
String aux = NSlider.split(":")[1]; //Receive "NSlider : {int}"
session.setAttribute("id_brazo", aux);
return SUCCESS;
}
public String getNSlider() {
return NSlider;
}
public void setNSlider(String NSlider) {
this.nSlider = NSlider;
}
}
此jsp必须在旋转木马中显示所选图片的索引
showArm.jsp
var app = angular.module('menuAPP', ['ui.bootstrap']);
app.controller('mainController', function($scope, $http, $window, $location) {
$scope.hideError=true;
$scope.show = function() {
$scope.currentIndex = $('div.active').index() + 1;//Carousel index
var params = "NSlider :"+ $scope.currentIndex;
var data = angular.toJson(params)
$http({
method: 'post',
url: 'showArm',
data: 'NSlider =' + data
}).success(function(response)
{
post("formShowBrazo");
});
};
<body>
<script src="lib/threejs/three.min.js"></script>
<script src="lib/threejs/OrbitControls.js"></script>
<script src="lib/threejs/dat.gui.min.js"></script>
<script src="lib/threejs/stats.min.js"></script>
<script src="js/webGL.js"></script>
<%
out.println(session.getAttribute("id_brazo"));
%>
<div id='container' width=800, height=600>
</body>
如果我调试这个动作,我可以看到我没有收到来自angular的任何值
更新
更改了json请求,更改了get和set的名称,还更改为字符串参数
现在我收到空值。还是不行
更新2
现在显示最终结果。现在工作正常。这是我如何将数据传递给Struts的操作。请参考此操作
$scope.submitForm=function(){
变量参数={
“名称”:$scope.name,
“用户名”:$scope.username,
“电子邮件”:$scope.email
};
var data=angular.toJson(参数);
$http({
方法:“POST”,
url:“/angular/studentForm.action”,
数据:“值=”+数据,
标题:{
“内容类型”:“应用程序/x-www-form-urlencoded”
}
}).成功(功能(数据){
if(data.errors){
$scope.errorname=data.errors.name;
$scope.errorUsername=data.errors.username;
$scope.erroremail=data.errors.email;
}否则{
控制台日志(数据);
$scope.message=数据;
}
}).错误(功能(数据、状态){
返回false;
});
};
});
您必须将参数更改为字符串,因为angular js仅适用于json数据。将getter和setter更改为
setNSlider
或更改变量名称。请在action类中传递与您希望获取的名称相同的值,这里您传递的参数名为value,并且希望在NSlider中获取。。试试看$http({method:'post',url:'showArm',data:'NSlider='+data});成功了。谢谢^^这是我向控制器类发送数据的方式,有人能告诉我如何检索吗
angular.module("ProductApp", []);
angular.module("ProductApp").controller("ProController",
function($scope, $window, $log, $http) {
$log.debug("loading controller");
$scope.productModel = {
'name' : '',
'type' : '',
'company' : '',
'price' : 0
};
$scope.toServer = function() {
$log.debug('starting to server');
var httpJson = {
url : '/angular_firstlook/product',
method : "POST",
params : {
'product' : $scope.productModel
}
};
$http(httpJson).success(function() {
$window.alert("sent to server success");
//geeting data from server
}).error(function() {
$window.alert("sent to server failure");
});
};
});