Jus*_*ohn 5 javascript java dojo spring-mvc dojox.grid.datagrid
我的要求是使用前端作为 DOJO & Spring MVC 从 DB 中读取、更新、删除和插入数据。
我能够从数据库中获取记录并显示在 DOJO 增强网格(可编辑网格)中。在编辑网格数据时,我不知道如何将网格存储项发送到我的 Spring Controller 和数据库中的更新/插入/删除。
这是我尝试将数据从 java 控制器获取到前端的代码。
控制器类
@RequestMapping(value="eiaProjectSummary", produces = "application/json")
public @ResponseBody Map<String, Object> getEIAProjectSummary(
@RequestParam(required = true) String prodGroupId,
@RequestParam(required = true) List<Integer> eiaValues
) {
Map<String, Object> returnList = new HashMap<String, Object>();
List<PCPTAnalysisBean> pcptList = //getting the list of records from DB.
returnList.put("eiaProjSummaryList", pcptList);
return returnList;
}
Run Code Online (Sandbox Code Playgroud)
Javascript
dojo.xhrGet({
url: "pcptAnalysis/eiaProjectSummary.json?prodGroupId="+ prodGrpId +"&eiaValues="+eiaValues,
handleAs: "json",
preventCache: true,
load: function(response) {
var resultsGrid = new dojo.data.ItemFileReadStore({
data: {
items:response.eiaProjSummaryList
}
});
grid = new dojox.grid.EnhancedGrid({store: resultsGrid,
structure: layout,
selectionMode: "multiple",
rowSelector: '0px'
});
}
});
Run Code Online (Sandbox Code Playgroud)
同样,我需要将编辑过的网格存储项从 Javascript 发送到我的控制器类。我不知道如何从 javascript ajax post 发送我的 Grid Store 数据以及如何在我的 Controller 类方法中接收它。请帮助我。
小智 2
首先,您需要 JavaScript (Dojo) 中的事件侦听器,当用户希望更新、删除或插入新行时调用这些事件侦听器。然后,您可以从要修改的行中的对象中获取必要的数据。对于插入和更新,您可以使用dojo.xhrPut和/或dojo.xhrPost。请参阅此讨论,了解 HTTP PUT 和 POST 之间差异的详细定义。要删除记录,您自然会使用dojo.xhrDelete。
在Spring方面,利用@ModelAttribute将请求参数解析为Java对象。下面是一个示例,其中 ProjectSummary 是一个预定义的 POJO,其 getter 和 setter 与更新所需的请求参数相匹配。
@RequestMapping(value = "/projectsummary/{id}", method = RequestMethod.PUT)
public void updateProjectSummary(@ModelAttribute("projectSummary") ProjectSummary projectSummary, @PathVariable long summmaryId, Model model) {
projectSummary.setId(summaryId);
// a pre-defined service object
service.updateProjectSummary(projectSummary);
model.addAttribute("success", true);
}
Run Code Online (Sandbox Code Playgroud)
要使用 POST 或 DELETE 而不是 PUT,请将 RequestMethod.PUT 更改为 RequestMethod.POST 或 RequestMethod.DELETE。对于删除,您可能不需要 model 属性,而只需要在要删除的资源的 URL 中传递一个标识符。对于 POST,它应该与 PUT 非常相似。
我希望这足以帮助您入门。
| 归档时间: |
|
| 查看次数: |
1818 次 |
| 最近记录: |