在带有 DOJO 插件的 Struts2 应用程序中使用 dijit 小部件有啥特殊要求吗?
Posted
技术标签:
【中文标题】在带有 DOJO 插件的 Struts2 应用程序中使用 dijit 小部件有啥特殊要求吗?【英文标题】:Is there something special required to use dijit widgets within a Struts2 application with the DOJO plugin?在带有 DOJO 插件的 Struts2 应用程序中使用 dijit 小部件有什么特殊要求吗? 【发布时间】:2010-02-15 18:35:14 【问题描述】:我正在制作一个网页原型并实现它。该原型大量使用 DOJO 来处理一些花哨的 UI 元素。该应用程序是使用启用了 DOJO 插件的 Struts 2.1.8.1 构建的。我可以在 struts 中使用特定于 dojo 的标签,但我无法让任何 dijit 小部件工作。
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<html xmlns="\"http://www.w3.org/1999/xhtml\"" xml:lang="\"en\"" lang="\"en\"">
<head>
<sx:head parseContent="true" />
<script type="text/javascript">
dojo.require("dijit.Dialog");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.form.DateTextBox");
dojo.require("dijit.form.TimeTextBox");
dojo.require("dijit.form.Slider");
dojo.require("dijit.Menu");
dojo.require("dijit.layout.AccordionContainer");
dojo.require("dojox.charting.Chart2D");
dojo.require("dojox.charting.themes.PlotKit.blue");
dojo.require("dojox.charting.themes.PlotKit.orange");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.SplitContainer");
dojo.require("dijit.form.DateTextBox");
dojo.require("dijit.Tooltip");
</script>
我得到的错误是:
GET http://localhost:9080/quickstart/struts/dijit/Dialog.js
GET http://localhost:9080/quickstart/struts/dijit/Dialog.js
404 Not Found
struts_dojo.js (line 769)
GET http://localhost:9080/quickstart/struts/dijit.js
GET http://localhost:9080/quickstart/struts/dijit.js
404 Not Found
struts_dojo.js (line 769)
ParamsHeadersPostPutResponseCacheHTML
Error 404: Error reported: 404
GET http://localhost:9080/quickstart/struts/dojo/__package__.js
GET http://localhost:9080/quickstart/struts/dojo/__package__.js
404 Not Found
struts_dojo.js (line 769)
ParamsHeadersPostPutResponseCacheHTML
Error 404: Error reported: 404
Could not load 'dijit.Dialog'; last tried '__package__.js'
[Break on this error] throw _13||Error(_12);
我是否需要对 Dojo 进行特殊构建才能访问这些 dijit 小部件?
【问题讨论】:
【参考方案1】:答案是因为 struts,以及我撰写本文时的最新版本 Struts 2.1.8.1,包括 DOJO 0.4。 Dijit 似乎是在 Dojo 1.0 之后的某个时候引入的。 (当前版本是 1.4)。
与 Struts 一起使用的小部件库是 Dojo.widget,默认情况下与 struts 一起加载。
【讨论】:
Dojo 0.4 大约 3 岁。您绝对应该尝试使用 Dijit。如果您避免 Struts 过时的 Dojo 集成,您可能可以直接包含 Dojo(但由于名称空间冲突,您不能同时使用两者) 我决定直接包含dojo,不使用任何struts ajax标签,只写我自己的javascript。以上是关于在带有 DOJO 插件的 Struts2 应用程序中使用 dijit 小部件有啥特殊要求吗?的主要内容,如果未能解决你的问题,请参考以下文章
Struts2 插件 - Dojo 或 jQuery 还是...?