从 Struts 2 中的 Ajax 请求中获取空值 [英] Getting null value in Action from Ajax request in Struts 2

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

问题描述

我正在尝试向 Action 发送 AJAX 请求,其中我从 JSP 页面发送一个参数.所以我的 Action 类正在接收 Ajax 请求,但我用 AJAX 类发送的参数在 Action 类中是 null.

I am trying to send AJAX request to Action in which I am sending 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 文件:

This is my struts.xml file:

 <?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 文件:

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

推荐答案

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

The problem is with your interceptors in 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

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

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