在我的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>
答案 0 :(得分:0)
请参阅,如果您使用的是struts2jQuery插件,则必须在web.xml中对url pattern / *进行以下过滤映射
<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>
休息应该可以正常工作:)
答案 1 :(得分:0)
尝试删除您在struts.xml中添加的任何命名空间,相应地调整您的URL。看看它是否有效。
答案 2 :(得分: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.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的核 - 2.2.1.jar struts2的-jQuery的插件-3.1.1.jar
struts2的
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter></i>
答案 3 :(得分: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"