JSON简单程序显示错误

时间:2013-07-06 05:04:53

标签: json struts2

Tyring一个简单的json示例,但它显示错误。   我在类路径中包含了gson-2.2.3.jar。

我正在使用netbeans 7.1。该程序没有部署。

Apache tomcat日志显示:

 Unable to load configuration. - action - file:/D:/APP/webApp1/build/web/WEB-INF/classes/struts.xml:10:73
Caused by: Error building results for action sayHi in namespace  - action - file:/D:/APP/webApp1/build/web/WEB-INF/classes/struts.xml:10:73
Caused by: There is no result type defined for type 'json' mapped with name 'success'.  Did you mean 'json'? - result - file:/D:/APP/webApp1/build/web/WEB-INF/classes/struts.xml:11:33

我正在尝试简单的例子。请看看有什么问题。 行动类

 public class AjaxActions extends ActionSupport {

    private String name;
    private String greeting;

    public String sayHi() {

        greeting = "HI " + name;
        return ActionSupport.SUCCESS;
    }

    public String getName() {
        return name;
    }

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

    public String getGreeting() {
        return greeting;
    }

    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }
}

struts.xml中

<package extends="struts-default,json-default" name="ajax-package" namespace="/ajax">
    <action class="example.AjaxActions" method="sayHi" name="sayHi">
        <result type="json">
        </result>
    </action>
</package>

在jsp文件中

<form action="" id="introForm">
            <label for="name">Enter Your Name</label>
            <input name="name">
            <input type="submit">
        </form>
        <script>
            $(function(){

                $("#introForm").submit(function(){

                var formInput=$(this).serialize();
                $.getJSON('ajax/sayHi.action', formInput,function(data) {

                $('.result').html('' + data.greeting + '');
                return false;

                });

            });
        </script>

1 个答案:

答案 0 :(得分:1)

根据项目库中的struts2版本添加struts2-json-plugin.jar。 如果您使用struts2.3.4则使用struts2-json-plugin2.3.4.jar

并在struts.xml

中更改您的内容

<package extends="struts-default,json-default"  至  <package extends="json-default"

并使用以下HTML代码。

    <form action="" id="introForm">
                <label for="name">Enter Your Name</label>
                <input type="text" id="name" name="name">
                <input onclick="javascript:getResultData();" type="submit">
           <span id="resultHtml"></span>
 </form>
            <script>
                function getResultData(){
                    var formInput=$("#name").val();
                    vat inputData={"name":formInput}
                    $.getJSON('ajax/sayHi.action', inputData,function(data) {

                    $("#resultHtml").html('' + data.greeting + '');
                    return false;

                    });
                   }

            </script>