我是 Dojo 的新手(事实上所有前端编程,我多年来一直在使用 Java 和 C# 从事服务器端工作)。我目前正在使用 Java Server Faces (JSF) 2.1 并尝试将 JSF 和 Dojo Grid (dgrid) 与 Dojo 1.8 一起使用。我有一个来自 dgrid 站点的示例,它展示了如何制作甘特图,但这个示例没有展示如何从应用程序服务器中提取 JSON 数据并将其提供给函数。问题是我很难将我的大脑包裹在 ARM 周围——我希望那里的一些经验可以帮助减轻我的一些痛苦。这是一些代码:
这是在我创建的 html 文件中,加载时,它只是创建甘特图:
<script>
require([ "gantt/GanttGrid", "gantt/data" ], function(GanttGrid, data){
// Instantiate the GanttGrid using predefined test data
new GanttGrid({
store: data,
query: {
// Only tasks with no parent task should be displayed in the root of the chart
parent: undefined
}
}, "gantt");
});
</script>
“数据”是从一个单独的 js 文件中提取的,只是被吞入 DOJO 的 Memory 对象的 JSON 数据:
define(["dojo/store/Memory"],function(Memory){
return new Memory({data:[
{name: "100", start: 1327900000000, end: 1328300000000, completed: 0.9, id: 1},
{name: "101", start: 1328100000000, end: 1328400000000, completed: 0.9, id: 2},
{name: "102", start: 1329100000000, end: 1329800000000, completed: 0.4, dependencies:[1], id: 3},
{name: "103", start: 1328400000000, end: 1328900000000, completed: 0.4, dependencies:[1], id: 4},
{name: "104", start: 1329000000000, end: 1329800000000, completed: 0.4, id: 5},
{name: "105", start: 1329000000000, end: 1329400000000, completed: 0.4, id: 6},
{name: "106", start: 1329400000000, end: 1329800000000, completed: 0.4, id: 7}
],
getChildren: function(parent, options){
return this.query({parent: parent.id}, options);
},
mayHaveChildren: function(parent){
return parent.hasChildren;
}
});});
现在,我想要的是能够调用 JSF Managed Bean 的方法,该方法将在后端执行一些逻辑,然后返回我可以添加到 DOJO 的内存存储并将其传递到 GanttGrid 的 JSON 数据,但是,我似乎无法弄清楚如何使用 ajax 请求来解决这个问题。
这是我在 XHTML 文件中成功从 bean 获取数据并将其显示在屏幕上的内容:
<fieldset>
<h:form id="schedulerForm">
<h:commandButton value="Execute Demo" id="executeDemo">
<f:ajax event="click" listener="#{autoScheduler.executeDemo}" render="result" />
</h:commandButton>
<p />
<h:outputText id="result" value="#{autoScheduler.result}" />
</h:form>
</fieldset>
我想要的是在 JSF bean 上捕获 executeDemo 的结果,以传递给创建 GanttGrid 的函数。我曾尝试在 DOJO 中使用“on”功能,但这只允许我捕获按钮单击(据我所知)......我想不出一种方法来知道执行何时完成,以便我可以从 bean 中获取数据并创建图表。最大的问题是我不知道如何使用 DOJO 请求模块调用 JSF bean。
我希望有人知道一个简单的方法来实现这一点。提前感谢您的帮助!如果您需要更多信息,请告诉我...我试图包含所有相关代码。
-保罗