从ajax请求在Struts2 Action获取空值 [英] Getting null value at Struts2 Action from ajax request

查看:75
本文介绍了从ajax请求在Struts2 Action获取空值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试向Action发送AJAX请求,在Action中我从JSP页面发送了一个参数.因此,我的Action类正在接收ajax请求,但是我通过AJAX类发送的参数在Action类中为空.

I am trying to send AJAX request to Action in which I am send one parameter from JSP page. So my Action class is receiving the ajax request but params which I am sending with AJAX class are null in Action class.

这是我的动作班:-

 public class AjaxAction{

String name;
private  String welcomeMessage;

public String execute(){

    System.out.println("AJax called "+name);
    welcomeMessage="Hello"+name;
    return "success";
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getWelcomeMessage() {
    return welcomeMessage;
}

public void setWelcomeMessage(String welcomeMessage) {
    this.welcomeMessage = welcomeMessage;
}
 }

这是我的 struts.xml 文件:-

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>

 <constant name="struts.devMode" value="true" />
    <package name="json" namespace="/" extends="json-default">
    <interceptors>
        <interceptor-stack name="defaultStack">
            <interceptor-ref name="json">
                <param name="enableSMD">true</param>
            </interceptor-ref>
        </interceptor-stack>
    </interceptors>

            <action name="ajaxAction" class="com.action.AjaxAction">
                <result type="json"/>
            </action>
    </package>

这是我的Jsp文件:-

This is my Jsp file:-

<title>Struts Ajax Example</title>
<script type="text/javascript">
    function ajaxStruts() {
        data = {
                name:$("#name").val(),
            };

            alert(data);
            $.ajax({
                  type: 'GET',
                  contentType:'application/x-www-form-urlencoded',
                  url:'ajaxAction',
                  data: $("#ajaxform").serialize(),
                  success: function(data){
                    alert(data);
                  }

            });

    }
</script>

 </head>
 <body>

<fieldset>
    <form method="POST" id="ajaxform">
        Name::<input type="text" id="name" name="name"> 
         <input type="button" name="submit"
            value="submit" onclick="return ajaxStruts();">
    </form>
</fieldset>
<fieldset>
    <div id="ajaxResult"></div>
</fieldset>
 </body>
 </html>

请帮助我.我要去哪里了......

Please help me..Where I am going wrong....

推荐答案

问题出在 struts.xml 中的拦截器.

要么删除它们,要么正确指定它们.您已经覆盖了 defaultstack ,这不是一个好习惯.

Either remove them or specify them properly. You have override defaultstack Which is not good practice.

您应该将拦截器堆栈的名称作为自定义名称与struts堆栈不同.

例如,将您的堆栈命名为mystack.

For Example, name your stack as mystack.

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

这意味着 defaultstack + json拦截器的所有拦截器.这将打包在名为mystack的拦截器堆栈中

This means all the interceptors of defaultstack + json interceptor. This will be packed in interceptor stack named as mystack

这篇关于从ajax请求在Struts2 Action获取空值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆