struts2 JSP Ajax вызов - PullRequest
       5

struts2 JSP Ajax вызов

1 голос
/ 24 июня 2019

Я пытаюсь сделать простой AJAX-вызов в Struts2 JSP, но постоянно получаю эту ошибку: «Диспетчер Struts не найден».Я проверил другие похожие потоки на stackoverflow, и похоже, что все правильно.Пожалуйста, сообщите.

web.xml содержит

   <filter>
        <filter-name>CompressionFilter</filter-name>
        <filter-class>pl.com.source.filter.gzip.GZIPFilter</filter-class>
    </filter>

        <filter>
        <filter-name>loginFilter</filter-name>
        <filter-class>com.hp.aso.pg.dw.wwmd.consoles.LoginFilter</filter-class>
    </filter>

        <filter>
        <filter-name>Acegi Filter Chain Proxy</filter-name>
        <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetClass</param-name>
            <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
        </init-param>
    </filter>   

    <filter>
        <filter-name>hibernateFilter</filter-name> 
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
        <init-param>
            <param-name>singleSession</param-name>
            <param-value>true</param-value>
        </init-param> 
    </filter>

    <filter>
        <filter-name>ResponseOverrideFilter</filter-name>
        <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
    </filter>

    <filter>
        <filter-name>contentTypeFilter</filter-name>
        <filter-class>pl.com.source.wwmd.filter.ContentTypeFilter</filter-class>
    </filter>

    <filter>
        <filter-name>zkossThemeFilter</filter-name>
        <filter-class>pl.com.source.wwmd.filter.ZkossThemeFilter</filter-class>
    </filter>

    <filter>
        <filter-name>userDefineFilter</filter-name>
        <filter-class>pl.com.source.wwmd.filter.UserDefineFilter</filter-class>
    </filter>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>Acegi Filter Chain Proxy</filter-name>
        <url-pattern>/*</url-pattern>
<!--        <url-pattern>*.actionOld</url-pattern>-->
    </filter-mapping>

    <filter-mapping>
        <filter-name>zkossThemeFilter</filter-name>
        <url-pattern>*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>userDefineFilter</filter-name> 
        <url-pattern>*.action</url-pattern> 
    </filter-mapping>

    <filter-mapping>
        <filter-name>userDefineFilter</filter-name> 
        <url-pattern>*.do</url-pattern>         
    </filter-mapping>

    <filter-mapping>
        <filter-name>hibernateFilter</filter-name> 
        <url-pattern>*.action</url-pattern> 
    </filter-mapping>

    <filter-mapping>
        <filter-name>ResponseOverrideFilter</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>contentTypeFilter</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>

</filter-mapping>

Struts.xml содержит

<constant name="struts.devMode" value="true" />
<package name="default" extends="json-default" namespace="/">
    <action name="sendvaluetoaction" class="pl.com.source.wwmd.action.topsheests.SendAction">
        <result name="SUCCESS" type="json">/index.jsp</result>
    </action>
</package>

SendAction.java

import com.opensymphony.xwork2.ActionSupport;

public class SendAction extends ActionSupport {
    private String name;
    private String msg;

    @Override
    public String execute() throws Exception {
        try {
            setMsg("Hello " + getName());
            System.out.println(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "SUCCESS";
    }

    public String getName() {
        return name;
    }

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

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

Ajax Call:

function testChange(){
    var name = "test"
    $.ajax({
        type : "GET",
        url : "sendvaluetoaction",
        data : "name=" + name,
        success : function(data) {
            var html = "<br>" + data.msg;
            console.log(html)
        },
        error : function(data) {
            alert("Some error occured.");
        }
    });

}

используемые внешние библиотеки (среди многих других):

  • Maven: commons-lang: commons-lang: 2.2
  • Maven: org.apache.Struts: Struts2-Core: 2.3.14
  • Maven: org.apache.struts: Struts2-JSON-плагин: 2.5.10

полное сообщение об ошибке:

The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]
    at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)
    at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44)
    at org.apache.struts2.views.jsp.ui.AbstractUITag.setDynamicAttribute(AbstractUITag.java:301)
    at jsp_servlet.__404._jsp__tag0(__404.java:162)
    at jsp_servlet.__404._jspService(__404.java:113)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:35)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
    at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:489)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:376)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:630)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:287)
    at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:866)
    at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:709)
    at weblogic.servlet.FileServlet.findSource(FileServlet.java:276)
    at weblogic.servlet.FileServlet.doGetHeadPost(FileServlet.java:180)
    at weblogic.servlet.FileServlet.service(FileServlet.java:162)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
    at pl.com.source.wwmd.filter.ContentTypeFilter.doFilter(ContentTypeFilter.java:35)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
    at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
    at pl.com.source.wwmd.filter.UserDefineFilter.doFilter(UserDefineFilter.java:75)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
    at pl.com.source.wwmd.filter.ZkossThemeFilter.doFilter(ZkossThemeFilter.java:30)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:178)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:193)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
    at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3706)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3672)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:328)
    at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
    at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
    at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
    at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2443)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2291)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2269)
    at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1705)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1665)
    at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:652)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...