2016-01-05 7 views
1

У меня возникли проблемы с получением значения от angularJS в действиях struts2.AngularJs посылает значение Struts2

Целью является получение указателя текущего изображения в карусели.

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

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

Если отладить действие, я могу видеть, что я не получаю никакого значения от угловой.

UPDATE Изменено петиция json, изменилось имя get и set, а также изменено, чтобы ввести параметр.

Теперь я получаю нулевое значение. Все еще не работает.

ОБНОВЛЕНИЕ 2 Теперь покажите окончательный результат. Теперь работает отлично.

+0

Измените получателя и сеттер на 'setNSlider' или измените имя переменной. –

ответ

4

Вот как я передаю данные в действие 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; 
     }); 
    }; 
}); 

Вы должны изменить параметр на строку, потому что угловой js работает только с данными json.

+0

Просьба передать значение того же имени, которое вы хотите получить в классе действий, здесь вы передаете параметр с именем как значение и хотите попасть в NSlider .. Попробуйте .... $ http ({ method: 'post', URL: 'showArm', данных:. 'NSlider =' + данные }) успех (функция (ответ) { сообщение ("formShowBrazo"); }); –

+0

ЭТО РАБОТАЕТ. Спасибо ^^ – Cadeq

0
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"); 
       }); 
      }; 
     }); 
+0

Вот как я отправляю данные в класс контроллера. Может ли кто-нибудь сказать мне, как получить –

Смежные вопросы