Struts2 jQuery配置问题

Struts2 jQuery配置问题,jquery,struts2,struts2-jquery,Jquery,Struts2,Struts2 Jquery,在我的webapp中,我使用的是struts2 jquery插件 Struts2 version - 2.3.7 struts.jquery.version - 3.5.0 为了将jQuery与Struts结合使用,我使用了以下配置- 在pom.xml中 <dependency> <groupId>com.jgeppert.struts2.jquery</groupId> <artifac

在我的webapp中,我使用的是struts2 jquery插件

Struts2 version - 2.3.7
struts.jquery.version - 3.5.0
为了将jQuery与Struts结合使用,我使用了以下配置-

在pom.xml中

        <dependency>
            <groupId>com.jgeppert.struts2.jquery</groupId>
            <artifactId>struts2-jquery-plugin</artifactId>
            <version>${struts.jquery.version}</version>
        </dependency>
我发现以下JavaScript错误:

Cannot call method 'bind' of undefined
jQuery.struts2_jquery_ui.bind(jQuery('#supplierMap_widget'),options_supplierMap_widget);
当我在浏览器中查看页面源代码时,我会看到以下内容。这里JavaScript include的路径与struts2-jquery-plugin.jar中的打包方式不同

<script type="text/javascript" src="/struts/js/base/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="/struts/js/base/jquery.ui.core.min.js?s2j=3.5.0"></script>
  <script type="text/javascript" src="/struts/js/plugins/jquery.subscribe.min.js"></script>

  <script type="text/javascript" src="/struts/js/struts2/jquery.struts2.min.js?s2j=3.5.0"></script>

<script type="text/javascript">
$(function() {
    jQuery.struts2_jquery.version="3.5.0";
    jQuery.scriptPath = "/struts/";
    jQuery.ajaxSettings.traditional = true;

    jQuery.ajaxSetup ({
        cache: false
    });

    jQuery.struts2_jquery.require("js/struts2/jquery.ui.struts2.min.js");

});
</script>

$(函数(){
jQuery.struts2_jQuery.version=“3.5.0”;
jQuery.scriptPath=“/struts/”;
jQuery.ajaxSettings.traditional=true;
jQuery.ajaxSetup({
缓存:false
});
struts2_jQuery.require(“js/struts2/jQuery.ui.struts2.min.js”);
});

请参见,如果您使用的是struts2jQuery插件,则必须在web.xml中具有url模式/*的以下筛选器映射

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

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

支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
支柱2
/*

Rest应该可以正常工作:)

尝试删除您可能在struts.xml中添加的任何名称空间,相应地调整URL。查看它是否有效。

在库中维护以下版本的JAR。我想你不会面临任何问题

antlr-2.7.6.jar commons-beanutils-1.7.0.jar commons-collections-3.2.jar commons-digester.jar commons-fileupload-1.2.2.jar commons-io-2.4.jar

commons-lang-1.2.jar commons-logging-1.1.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar struts2-core-2.2.3.jar

xwork-core-2.2.1.jar struts2-jquery-plugin-3.1.1.jar

支柱2

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

我猜你的问题与上述任何答案有关

正如错误消息所说,您的问题是jQuery.struts2\u jQuery\u ui未定义

这是在代码警告时提供的:

 jQuery.struts2_jquery.require("js/struts2/jquery.ui.struts2.min.js");
此文件不在您的标记中。请参阅.ui

你所拥有的是:

 "/struts/js/struts2/jquery.struts2.min.js?s2j=3.5.0"

即使你没有使用jquery插件,你也不需要吗?不,如果我没有使用jquery插件,我可以为url模式*.action:)编写过滤器映射。不正确,默认的S2主题也需要*.mapping,除非你提取静态文件。你是在容器中以root用户身份部署你的应用程序吗?
 jQuery.struts2_jquery.require("js/struts2/jquery.ui.struts2.min.js");
 "/struts/js/struts2/jquery.struts2.min.js?s2j=3.5.0"