错误返回到struts2 tiles项目中的相同jsp,使用JQuery和JSON进行AJAX实现

时间:2016-08-04 09:20:18

标签: java json jsp struts2

我正在尝试根据第一个下拉(状态)选择在struts2中为州,城市Populate第二个下拉列表(城市)实现下拉。我正在使用struts2 tiles。

我想返回类型json,一切顺利,直到我必须返回到相同的jsp页面,我已经调用了该动作。

这是我的JSP代码

    <%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>AJAX in Struts 2 using JSON and jQuery</title>
<script src="js/jquery-1.8.2.js" type="text/javascript"></script>
<script>
    $(document).ready(function() {
        $('#state').change(function(event) {
            var state = $("select#state").val();
            $.getJSON('ajaxAction', {
                stateName : state
            }, function(jsonResponse) {
                $('#ajaxResponse').text(jsonResponse.dummyMsg);
                var select = $('#city');
                select.find('option').remove();
                $.each(jsonResponse.stateMap, function(key, value) {
                    $('<option>').val(key).text(value).appendTo(select);
                });
            });
        });
    });
</script>
</head>
<body>
    <h3>AJAX calls to Struts 2 using JSON and jQuery</h3>
    <s:select name="state" id="state"  list="stateList"
    headerKey="0" headerValue="--select--"  label="Select state" theme="simple" />
    <br />
    <br />
    <s:select id="city" name="city" list="{'Select city'}"
        label="Select city" theme="simple" />
    <br />
    <br />
    <div id="ajaxResponse"></div>
</body>
</html>

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>
    <package name="default" extends="struts-default,json-default">
        <result-types>
            <result-type name="tiles"
                class="org.apache.struts2.views.tiles.TilesResult" />
            <result-type name="json" class="com.googlecode.jsonplugin.JSONResult" />
        </result-types>
        <action name="*Link" method="{1}"
            class="com.rooh.agriculture.LayoutRedirect">
            <result name="welcome" type="tiles">welcome</result>
            <result name="page1" type="tiles">page1</result>
            <result name="page3" type="tiles">page3</result>
        </action>

        <action name="*Link" method="{1}"
            class="com.rooh.agriculture.DisplayListData">
            <result name="welcome" type="tiles">welcome</result>
            <result name="page1" type="tiles">page1</result>
            <result name="page2" type="tiles">page2</result>
            <result name="page3" type="tiles">page3</result>
            <result name="page4" type="tiles">page4</result>

        </action>
        <action name="Link*" method="{1}"
            class="com.rooh.agriculture.SendEmailAction">
            <result name="page5" type="tiles">page5</result>
        </action>
        <action name="ajaxAction" class="com.rooh.agriculture.AjaxJsonAction">
            <result type="json">/page/page2.jsp</result>
        </action>

    </package>

</struts>

动作类

 package com.rooh.agriculture;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;


import com.opensymphony.xwork2.Action;

public class AjaxJsonAction implements Action {

    private List<String> stateList, cityList;

    // Parameter for Jquery
    private String stateName;

    public String execute() {
        System.out.println("statename = " + getStateName());
        stateList = new ArrayList<String>();
        cityList = new ArrayList<String>();
        try {
            System.out.println("Checkpoint 1");
            Connectivity con1 = new Connectivity();
            Connection con = con1.getConnection();
            PreparedStatement ps = con
                    .prepareStatement("SELECT state,city FROM rooh_agriculture_v1_db.rooh_agriculture_city_state where state=?");
            ps.setString(1, getStateName());
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {

                String ListResult = rs.getString(1);
                String ListResult1 = rs.getString(2);
                System.out.println("the List Result is " + ListResult);
                System.out.println("the List Result is " + ListResult1);
                stateList.add(ListResult);
                //cityList.add(ListResult1);
                System.out.println("This Is a state List  = " + cityList);
            }
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "success";
    }

    public List<String> getStateList() {
        return stateList;
    }

    public void setStateList(List<String> stateList) {
        this.stateList = stateList;
    }

    public List<String> getCityList() {
        return cityList;
    }

    public void setCityList(List<String> cityList) {
        this.cityList = cityList;
    }

    public String getStateName() {
        return stateName;
    }

    public void setStateName(String stateName) {
        this.stateName = stateName;
    }

}

错误 -

Aug 06, 2016 4:46:51 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/RoohAgricultureProject] threw exception [Filter execution threw an exception] with root cause
java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/TextUtils
    at com.googlecode.jsonplugin.JSONUtil.writeJSONToResponse(JSONUtil.java:197)
    at com.googlecode.jsonplugin.JSONResult.writeToResponse(JSONResult.java:192)
    at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:182)
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:367)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:271)
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:544)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

0 个答案:

没有答案