Действие, не выполняемое с функцией "Угловая почта"

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

У меня есть контроллер (Controller.js), где я использую метод post для вызова класса action (CartAction).

Я не обнаружил ошибок при вызове action/StrutsAngular/ControllerAction.do из сообщения в контроллере.js.

Но класс действия не выполняется, даже system.out.println не выполняется. Когда я добавил предупреждение в функцию успеха, я могу получить входную страницу. Когда я дал неправильный путь, я попал в функцию ошибки.

Я не мог понять, почему действие не вызвано.

И у меня есть другое уточнение, если в этом случае → если действие вызывается, где я могу получить данные ответа.

Раньше я использовал jQuery, и я также предоставил образец кода, который я использовал. Как мы можем сделать это аналогичным образом, используя AngularJS

Пожалуйста, помогите мне и дайте мне знать в случае дополнительной информации.

Заранее благодарим за ответы.

Controller.js

function Controller($scope,$http) {

 $http.post('/StrutsAngular/ControllerAction.do').
 success(function(data, status, headers, config) {
 // this callback will be called asynchronously
 // when the response is available
 alert("Success :: "+data);
 }).
 error(function(data, status, headers, config) {
 // called asynchronously if an error occurs
 // or server returns response with an error status.
 alert("Error :: "+data);
 });


}

Класс действия

public class CartAction extends org.apache.struts.action.Action {


 /**
 * This is the action called from the Struts framework.
 *
 * @param mapping The ActionMapping used to select this instance.
 * @param form The optional ActionForm bean for this request.
 * @param request The HTTP Request we are processing.
 * @param response The HTTP Response we are processing.
 * @throws java.lang.Exception
 * @return
 */
 @Override
 public ActionForward execute(ActionMapping mapping, ActionForm form,
 HttpServletRequest request, HttpServletResponse response)
 throws Exception {

 System.out.println("Entering Shop Cart Action");

 List<object> objectList= new ArrayList<>(); 

 CartDto cartDto = new ShopingCartDto();
 cartDto.setSno(1);
 cartDto.setTitle("Title One");

 objectList.add(cartDto);


 response.setHeader("cache-control","no-cache");
 response.setContentType("text/json");
 PrintWriter out = response.getWriter();

 JSONArray jsonArray = JSONArray.fromObject(objectList);
 out.println(jsonArray.toString());

 return null;
 }


}
 <p> <span>Jquery</span></p> <pre class="prettyprint linenums"><code>function onSubmit(){
 var url = "/StrutsAngular/ControllerAction.do";
 var formID = document.getElementById('formId');
 var forwardUrl = "/StrutsAngular/ControllerAction.do";

}

function doAjaxPost(formId,url,forwardUrl){

 var data = $("#"+formId+" :input").serializeArray();
 $.ajax({
 type: "POST",
 url: url,
 data: data,
 beforeSend: function(jqXHR, settings){

 var value = "Please Wait until progressing!";
 document.getElementById('progress').innerHTML=value; 
 },
 success: function(json){


 var message=json[0].message;


 },
 error: function(jqXHR, textStatus, errorThrown){

 if(jqXHR.status==500){
 document.getElementById('errorMessage').innerHTML=errorThrown;
 }

 },
 complete: function(jqXHR, textStatus){
 document.getElementById('progress').innerHTML="";

 if(jqXHR.status==500){

 var message = textStatus;
 document.getElementById('errorMessage').innerHTML=message;

 }

 }
});

}</code>

JSP

<code>&lt;%-- 
 Document : Cart
 Created on : 25 Mar, 2014, 5:14:42 PM
 Author : Arun
--%&gt;

&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;


 
 &lt;title&gt;Cart&lt;/title&gt;
 
 
 
 
 
 
 
 
 
 

 &lt;div&gt;


 &lt;form name="shoppingForm" id="formId"&gt;

 &lt;table&gt;
 
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;S No&lt;/th&gt;
 &lt;th&gt;Item&lt;/th&gt;
 &lt;/tr&gt; 
 &lt;/thead&gt;

 &lt;tbody&gt;&lt;tr ng-repeat="item in items | orderBy:title | filter:search"&gt;
 
 
 &lt;/tr&gt;
 &lt;/tbody&gt;&lt;/table&gt;
 &lt;div&gt;&lt;button&gt;Submit&lt;/button&gt;&lt;/div&gt;
 &lt;/form&gt;

 &lt;/div&gt;</code>
1 ответ

Хорошо, у вас есть несколько проблем, и большинство из них, похоже, неправильно понимают, как работает Angular. Существует большая публикация SO о "мышлении в угловом" с фона jQuery:

"Мышление в AngularJS", если у меня есть фон jQuery?

Чтобы дать вам некоторые особенности, основанные на вашем коде:

Во-первых, вам нужно создать приложение (angular.module), которому назначен атрибут ng-app. Например:

var myApp = angular.module('myApp',[]); // this creates a new angular module named "myApp";

  // this will bootstrap your myApp module at the html DOM element once the domIsReady event fires

Во-вторых, вам нужно определить контроллер, используя Angular, на модуле и передать функцию. Существует экспериментальный синтаксис "Controller as" для Angular, но я бы предложил сделать это стандартным способом, прежде чем пытаться это сделать.

myApp.controller('myCtrl', function ($scope,$http) {

 $http.post('/StrutsAngular/ControllerAction.do').
 success(function(data, status, headers, config) {
 // this callback will be called asynchronously
 // when the response is available
 alert("Success :: "+data);
 }).
 error(function(data, status, headers, config) {
 // called asynchronously if an error occurs
 // or server returns response with an error status.
 alert("Error :: "+data);
 });
});

<div ng-controller="myCtrl"> <p> Наконец, функция, переданная контроллеру(), будет вызываться только один раз и только после ее использования где-то. Таким образом, привязка к DIV в этом примере приведет к тому, что один файл http.post будет сохранен сразу же после загрузки DOM. Он ничего не сделает. Я предполагаю, что это просто вы проверяете, что он туда попал. Для "реального" кода вы можете выставить определенные функции через $ scope и вызвать их из вашего представления:</p> <pre class="prettyprint linenums">myApp.controller('myCtrl', function ($scope,$http) {
 $scope.sendData = function() {
 $http.post(.....your other code....);
 }
});

<div ng-controller="myCtrl">send data</div>

licensed under cc by-sa 3.0 with attribution.