当前位置:  开发笔记 > 编程语言 > 正文

AngularJs向Struts2发送值

如何解决《AngularJs向Struts2发送值》经验,为你挑选了1个好方法。

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

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


    
    
    
    
          
    <%
        out.println(session.getAttribute("id_brazo"));
    %>
    

如果我调试动作,可以看到我没有从angular那里得到任何值。

UPDATE 更改了json请求,更改了get和set的名称,还更改了字符串参数。

现在我收到空值。仍然无法正常运作。

更新2 现在显示最终结果。现在工作正常。



1> 小智..:

这是我将数据传递给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;
        });
    };
});

您必须将参数更改为字符串,因为angular js仅适用于json数据。

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有