3

私のウェブアプリでは、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

libで次のバージョンの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.jarcommons-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 に答える