使用 Struts2 JQuery 日期选择器标签获取未捕获的类型错误
Getting Uncaught TypeError errors using Struts2 JQuery datepicker tag
我有一个 Struts 2 应用程序 UI 使用 bootstrap 构建,我正在尝试使用 struts2 [=31= 让 JQuery 日期选择器工作] 标签库。我正在使用 <sj:head compressed="true" jqueryui="true" />
来包含 JQuery CSS 和 JS 库。以下是使用 sj:head
:
包含的内容
<script type="text/javascript" src="/struts/js/base/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/struts/js/base/jquery.ui.core.min.js?s2j=3.7.1"></script>
<script type="text/javascript" src="/struts/js/plugins/jquery.subscribe.min.js?s2j=3.7.1"></script>
<script type="text/javascript" src="/struts/js/struts2/jquery.struts2.min.js?s2j=3.7.1"></script>
<script type="text/javascript">
$(function () {
jQuery.struts2_jquery.version = "3.7.1";
jQuery.scriptPath = "/struts/";
jQuery.ajaxSettings.traditional = true;
jQuery.ajaxSetup({
cache: false
});
jQuery.struts2_jquery.require("js/struts2/jquery.ui.struts2.min.js?s2j=3.7.1");
});
</script>
<link id="jquery_theme_link" rel="stylesheet"
href="/struts/themes/smoothness/jquery-ui.css?s2j=3.7.1" type="text/css"/>
下面是JSP中datepicker相关的代码:
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<div class="form-group row">
<label class="col-sm-2 control-label">From</label>
<div class="col-sm-4">
<sj:datepicker id="fromDate" displayFormat="m/d/y" showOn="focus" name="startDate"></sj:datepicker>
</div>
<label class="col-sm-2 control-label">To</label>
<div class="col-sm-4">
<sj:datepicker id="toDate" displayFormat="m/d/y" showOn="focus" name="endDate"></sj:datepicker>
</div>
</div>
<script>
$(function() {
$("#fromDate").datepicker({
dateFormat: 'yy-mm-dd',
maxDate: 0,
changeYear: true
}).attr('readonly', 'readonly');
$("#toDate").datepicker({
dateFormat: 'yy-mm-dd',
maxDate: 0,
changeYear: true
}).attr('readonly', 'readonly');
});
</script>
字段显示正常,似乎也能正常工作。但是,我在控制台中收到以下错误:
Uncaught TypeError: Cannot set properties of undefined (setting 'version')
at HTMLDocument.<anonymous> (viewResults:62:39)
at j (jquery-1.11.0.min.js:776:111)
at Object.fireWith [as resolveWith] (jquery-1.11.0.min.js:810:100)
at Function.ready (jquery-1.11.0.min.js:865:65)
at HTMLDocument.K (jquery-1.11.0.min.js:873:97)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'initDatepicker')
at HTMLDocument.<anonymous> (viewResults:360:27)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'bind')
at HTMLDocument.<anonymous> (viewResults:372:26)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'initDatepicker')
at HTMLDocument.<anonymous> (viewResults:382:27)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'bind')
at HTMLDocument.<anonymous> (viewResults:394:26)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
我无法弄清楚我在这里弄错了什么导致了这些错误。我尝试删除 sj:head
并改为手动包含库,但这也不起作用。
加载了错误的 jQuery 框架版本。
<script type="text/javascript" src="/struts/js/base/jquery-1.11.0.min.js"></script>
Don't load jQuery library twice on the same page. First time you load it with
<script src="... ">
第二次载入
<sj:head/>
您应该在 <head>
标签的正文中包含 <sj:head/>
标签。
如果您使用 <sj:head>
tag,那么您可以自定义它以使用不同版本的 jQuery。
我有一个 Struts 2 应用程序 UI 使用 bootstrap 构建,我正在尝试使用 struts2 [=31= 让 JQuery 日期选择器工作] 标签库。我正在使用 <sj:head compressed="true" jqueryui="true" />
来包含 JQuery CSS 和 JS 库。以下是使用 sj:head
:
<script type="text/javascript" src="/struts/js/base/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/struts/js/base/jquery.ui.core.min.js?s2j=3.7.1"></script>
<script type="text/javascript" src="/struts/js/plugins/jquery.subscribe.min.js?s2j=3.7.1"></script>
<script type="text/javascript" src="/struts/js/struts2/jquery.struts2.min.js?s2j=3.7.1"></script>
<script type="text/javascript">
$(function () {
jQuery.struts2_jquery.version = "3.7.1";
jQuery.scriptPath = "/struts/";
jQuery.ajaxSettings.traditional = true;
jQuery.ajaxSetup({
cache: false
});
jQuery.struts2_jquery.require("js/struts2/jquery.ui.struts2.min.js?s2j=3.7.1");
});
</script>
<link id="jquery_theme_link" rel="stylesheet"
href="/struts/themes/smoothness/jquery-ui.css?s2j=3.7.1" type="text/css"/>
下面是JSP中datepicker相关的代码:
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<div class="form-group row">
<label class="col-sm-2 control-label">From</label>
<div class="col-sm-4">
<sj:datepicker id="fromDate" displayFormat="m/d/y" showOn="focus" name="startDate"></sj:datepicker>
</div>
<label class="col-sm-2 control-label">To</label>
<div class="col-sm-4">
<sj:datepicker id="toDate" displayFormat="m/d/y" showOn="focus" name="endDate"></sj:datepicker>
</div>
</div>
<script>
$(function() {
$("#fromDate").datepicker({
dateFormat: 'yy-mm-dd',
maxDate: 0,
changeYear: true
}).attr('readonly', 'readonly');
$("#toDate").datepicker({
dateFormat: 'yy-mm-dd',
maxDate: 0,
changeYear: true
}).attr('readonly', 'readonly');
});
</script>
字段显示正常,似乎也能正常工作。但是,我在控制台中收到以下错误:
Uncaught TypeError: Cannot set properties of undefined (setting 'version')
at HTMLDocument.<anonymous> (viewResults:62:39)
at j (jquery-1.11.0.min.js:776:111)
at Object.fireWith [as resolveWith] (jquery-1.11.0.min.js:810:100)
at Function.ready (jquery-1.11.0.min.js:865:65)
at HTMLDocument.K (jquery-1.11.0.min.js:873:97)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'initDatepicker')
at HTMLDocument.<anonymous> (viewResults:360:27)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'bind')
at HTMLDocument.<anonymous> (viewResults:372:26)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'initDatepicker')
at HTMLDocument.<anonymous> (viewResults:382:27)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'bind')
at HTMLDocument.<anonymous> (viewResults:394:26)
at j (jquery-3.1.1.min.js:2:29948)
at k (jquery-3.1.1.min.js:2:30262)
我无法弄清楚我在这里弄错了什么导致了这些错误。我尝试删除 sj:head
并改为手动包含库,但这也不起作用。
加载了错误的 jQuery 框架版本。
<script type="text/javascript" src="/struts/js/base/jquery-1.11.0.min.js"></script>
Don't load jQuery library twice on the same page. First time you load it with
<script src="... ">
第二次载入
<sj:head/>
您应该在 <head>
标签的正文中包含 <sj:head/>
标签。
如果您使用 <sj:head>
tag,那么您可以自定义它以使用不同版本的 jQuery。