AngularJs向Struts2发送值

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数据。