Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AngularJs将值发送到Struts2_Java_Angularjs_Post_Struts2_Carousel - Fatal编程技术网

Java AngularJs将值发送到Struts2

Java 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;

我在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");
                });
            };  
<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");
                });
            };
        });