2015-10-26 39 views
0

如何将JSON发送到Struts2使用AngularJS形式操作?如何将JSON发送到Struts2使用AngularJS形式操作?

我的代码:

我在struts.xml

<package name="default" extends="json-default"> 

    <interceptors> 
     <interceptor-stack name="defaultStack"> 
      <interceptor-ref name="json"> 
       <param name="enableSMD">true</param> 
      </interceptor-ref> 
     </interceptor-stack> 
    </interceptors> 

    <default-interceptor-ref name="defaultStack" /> 

    <action name="angularAction" class="actions.CustomerAction" method="findCustomer" > 
     <result type="json"> 
       <param name="root">customer</param> 
       <param name="excludeNullProperties">true</param> 
       <param name="noCache">true</param> 
     </result> 
    </action> 

</package> 

我的Java类:

public class Customer { 

    private String id; 
    private String name; 
    private String email; 
    private String phone; 

    public Customer() { 

    } 

    public Customer(String id, String name, String email, String phone) { 

     this.id = id; 
     this.name = name; 
     this.email = email; 
     this.phone = phone; 

    } 

    //getters and setters omitted 
} 

我Struts2的行动

public class ClienteAction extends ActionSupport { 

    private List<Customer> jsonCustomer; 

    public List<Customer> getJsonCustomer() { 
     return jsonCustomer; 
    } 


    public void setJsonCustomer(List<Customer> jsonCustomer) { 
     this.jsonCustomer = jsonCustomer; 
    } 

    public String findCustomer() { 

     List<Customer> jc = getJsonCustomer(); 

     return SUCCESS; 

    } 

} 

我的角度代码:

angular.module('myApp', []); 

angular.module('myApp'). 
controller('MyController', function ($scope, $http) { 
    $scope.getDataFromServer = function(customer) { 

     var data1 = JSON.stringify(customer); 

      $http({ 
       url: 'angularAction?jasonCustomer=' + data1, 
       method: 'GET' 
      }).then (function successCallback(response) { 
       $scope.customer = response.data;      

      }, function errorCallback(response) { 
       console.log(response.data) ; 
      })  

     }; 
    }); 

My Libs

它不工作! angularAction中的变量jsonCustomer为null。

我是有角的新手。我正在使用这个教程,但角而不是jQuery。

http://tech.learnerandtutor.com/send-json-object-to-struts-2-action-by-jquery-ajax/

由于通过帮助!

+0

使用正确安装支柱URL。也可以通过指定什么不工作和如何编辑你的问题,然后发布错误消息,堆栈跟踪,JavaScript控制台错误等。同时确保你已经正确地配置了你的拦截器堆栈并包含了所有需要的库 –

+0

你真的想/需要发送json? –

+0

嗨Aleksandr M,我是有角的新手。将表单数据发送到Struts Action的最佳方法是什么? – Paulo

回答

0

所有你需要在你的angularJS改变,在这里首先是如下的变化:

angular.module('myApp', []); 

angular.module('myApp'). 
controller('MyController', function ($scope, $http) { 
    $scope.getDataFromServer = function(customer) { 

     var data1 = JSON.stringify(customer); 

      $http({ 
       url: 'angularAction', 
       method: 'POST', 
       'jasonCustomer' : data1 
      }).then (function successCallback(response) { 
       $scope.customer = response.data;      

      }, function errorCallback(response) { 
       console.log(response.data) ; 
      })  

     }; 
    }); 

现在用参数jasonCustomer,最后我们得到我们的行动JSON数据angularAction GET JSON数据类:

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import javax.servlet.http.HttpServletRequest; 

import org.apache.commons.io.IOUtils; 
import org.apache.struts2.ServletActionContext; 

import com.blogspot.geekonjava.db.ProductDB; 
import com.blogspot.geekonjava.gs.Product; 
import com.opensymphony.xwork2.Action; 

public class CustomerAction{ 
static HttpServletRequest request ; 


    public static String findCustomer() 
    { 
    try { 
    request = ServletActionContext.getRequest(); 
    String filename = IOUtils.toString(request.getInputStream()); 
    System.out.println("jsonData "+filename); 
    // Here you can use your code 



    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    return "success"; 
    } 



    public String execute() { 
    return Action.SUCCESS; 
     } 

} 

对您有所帮助或refrences你可以遵循:this link

相关问题