Cad*_*deq 2 java post struts2 carousel angularjs
我在struts2动作中从angularJS接收值时遇到一些问题。
目的是在轮播中接收当前图像的索引。
selectArm.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");
});
};
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
}
该jsp必须在轮播中显示所选图片的索引。
showArm.jsp
<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>
Run Code Online (Sandbox Code Playgroud)
如果我调试动作,可以看到我没有从angular那里得到任何值。
UPDATE 更改了json请求,更改了get和set的名称,还更改了字符串参数。
现在我收到空值。仍然无法正常运作。
更新2 现在显示最终结果。现在工作正常。
小智 5
这是我将数据传递给Struts动作的方式,请从此处参考。
$scope.submitForm = function() {
var params = {
"name" : $scope.name,
"username" : $scope.username,
"email" : $scope.email
};
var data = angular.toJson(params);
$http( {
method : 'POST',
url : '/angular/studentForm.action',
data : 'value=' + data,
headers : {
'Content-Type' : 'application/x-www-form-urlencoded'
}
}).success(function(data) {
if (data.errors) {
$scope.errorname = data.errors.name;
$scope.errorUsername = data.errors.username;
$scope.erroremail = data.errors.email;
} else {
console.log(data);
$scope.message = data;
}
}).error(function(data, status) {
return false;
});
};
});
Run Code Online (Sandbox Code Playgroud)
您必须将参数更改为字符串,因为angular js仅适用于json数据。