3

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

Struts2 version - 2.3.7
struts.jquery.version - 3.5.0

为了在 Struts 中使用 jQuery,我使用了以下配置 -

在 pom.xml 中

        <dependency>
            <groupId>com.jgeppert.struts2.jquery</groupId>
            <artifactId>struts2-jquery-plugin</artifactId>
            <version>${struts.jquery.version}</version>
        </dependency>

在我的 JSP 中添加了以下标签:

 <sj:head  jqueryui="true"/>

并使用了autocompleter这样的小部件:

<s:url var="supUrl" namespace="/ajax" action="suppliers"/>
 <sj:autocompleter
    id="supplierMap"
    name="echo"
     label="Handle a Map"
     href="%{supUrl}"
     list="supplierMap"/>

我收到以下 JavaScript 错误:

Cannot call method 'bind' of undefined
jQuery.struts2_jquery_ui.bind(jQuery('#supplierMap_widget'),options_supplierMap_widget);

当我在浏览器中查看页面源时,我看到以下内容。这里 JavaScript 包含的路径与它在 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>
4

4 回答 4

1

看,如果你使用 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>

休息应该可以正常工作:)

于 2013-01-08T12:06:16.680 回答
0

在您的库中维护以下版本的 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

struts2

    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter></i>
于 2013-02-26T13:47:00.317 回答
0

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

于 2013-02-05T06:49:17.810 回答
0

我的猜测是您的问题与上述任何答案有关。

正如错误消息所说,您的问题是 jQuery.struts2_jquery_ui 未定义。

这是作为代码警告提供的:

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

此文件不在您的标签中。请参阅 .ui。???

你所拥有的是:

 "/struts/js/struts2/jquery.struts2.min.js?s2j=3.5.0"
于 2013-12-09T13:07:32.850 回答