1

在我的 struts2 应用程序中,我需要将 pojo 列表发送到 struts2 操作。但无法获得采取行动的方法。

这是我的 JavaScript 函数。

function go() {
    var requests = Array();
    var url='testUrl';
      $('.innertable').each(function(index){
         var form= $(this).closest('form');
         if(index!=0)
             {
             var xVal=form.find("#xVal"+index).val();
             }
             else
              {
             var xVal=form.find("#xVal"+index).val();
              } 
         var testPojo = {
                 xVal:xVal
             }
         requests.push(testPojo);
         });
         alert('======='+JSON.stringify(requests));
                      $.ajax({
                        url: url,
                        data: JSON.stringify(requests),
                        contentType: "application/json; charset=utf-8",
                        type: 'POST',
                        success: function(data){
                       //success code
                        },
                        error: function(xhr, status, error) {
                            alert(xhr.responseText);
                             window.location.reload();
                        }
         });

}

我的 struts2 动作

public String testUrl()
    {
        //here what code i can use to get List of pojo
        return SUCCESS;
    }

当我运行它时,我会在警报中获得请求的值:

[{"xVal":"$3,000"},{"xVal":"$5,000"}]

如何在 struts2 操作中获得此值?

4

4 回答 4

1

最后我解决了这个问题。我在这里分享这可能对其他人有用。

代替使用 ajax 发送数据这里我发送附加在 url 的查询字符串中的数据。这里是示例。

                       $.ajax({
                        url: url+"?data="+JSON.stringify(requests),
                        contentType: "application/json; charset=utf-8",
                        type: 'POST',
                        success: function(data){
                        //success code
                        },
                        error: function(xhr, status, error) {
                            alert(xhr.responseText);
                            alert('there is some problem in updating data');

                        }
         });

这是行动代码

    public String testUrl()
    {

        String data = request.getParameter("data");

        System.out.println("data is :"+data);
        List<TestPojo> testPojos=new ArrayList<TestPojo>();
        try{
            JSONArray jsonArray1 = new JSONArray(data);
            for (int i = 0; i < jsonArray1.length(); i++) {
                JSONObject jsonObject = jsonArray1.getJSONObject(i);

                TestPojo testPojo = new TestPojo();

                testPojo.setTestField(jsonObject.get("testField").toString());

                testPojos.add(testPojo);    
            }
           //additional code here 

        }catch (Exception e) {
            System.out.println("error");
        }

        return SUCCESS;
    }
于 2013-10-15T12:48:35.113 回答
0

你可以这样使用

var jsonStr = JSON.stringify(requests);    
                      $.ajax({
                        url: url,
                        data: "jsonAct="+jsonStr ,
                        contentType: "application/json; charset=utf-8",
                        type: 'POST',
                        success: function(data){
                       //success code
                        }

然后在动作类中为 jsonAct 生成 setter getter

private String jsonAct;




public String getJsonAct() {
    return jsonAct;
}

public void setJsonAct(String jsonAct) {
    this.jsonAct = jsonAct;
}

我遇到了同样的问题,它得到了解决。

于 2014-11-11T15:11:34.920 回答
0

例如:你可以试试这种方式

 $.ajax({

        type : 'post',      

        url : 'getsampleZone.action',

        data: "disctric ="+ value,

        dataType: 'json',    

        async: true ,

        success:function(x){

            alert("aasdsds");       

        }                       

});

在行动页面;

    private String disctric;

    System.out.println("disctric >>>>"+getDisctric());

    public String getDisctric() {

    return disctric;

    }

public void setDisctric(String disctric) {
    this.disctric = disctric;
}
于 2013-11-05T09:54:33.107 回答
0

@Ravi Kant 首先,为什么要发送 json 字符串来执行操作?我的意思是为什么是json格式?有什么具体原因吗?您需要通过在 Action 文件中将请求声明为字符串变量来接收此请求变量,并使用 getter 和 setter 方法从表单中获取值。

private String requests;

public String getRequests() {
    return requests;
}

public void SetRequests(String requests) {
    this.requests = requests;
}
于 2013-10-09T16:41:26.063 回答