一步一步学grails(9)

### 一步一步学Grails(9) #### 知识点概览 本文档是关于Grails框架的实战教程,旨在通过具体项目的开发流程帮助初学者掌握Grails的基本使用方法和技术要点。主要内容包括创建用户输入界面、链接操作、控制器Action设计、视图页面构建以及基本的数据操作等。 #### 一、创建用户输入界面 **知识点:** GSP语法、HTML元素嵌入、Grails内置标签库 1. **GSP语法简介:** Grails使用Groovy Server Pages (GSP)作为视图层的技术,它可以结合Groovy脚本和标准HTML来创建动态网页。 2. **创建加工费录入入口:** 为了方便用户录入加工费,我们需要在`main.gsp`页面中添加一个按钮。通过使用Grails的内置标签`<g:link>`来实现链接跳转功能。示例代码如下: ```groovy <span class="menuButton"> <g:link class="doc" action="index" controller="materialCost">加工费</g:link> </span> ``` 这里的`<g:link>`标签表示创建一个指向控制器`materialCost`中的`index`方法的链接。 #### 二、增强生产计划列表功能 **知识点:** 动态链接、控制器Action处理 1. **动态链接:** 在生产计划列表页面中,可以为每个生产编号添加一个“工艺表”链接,以便用户可以直接进入对应的工艺表编辑页面。通过使用`<g:link>`标签,并将动态变量`productionNoInstance.findPlan().id`传递给控制器`planning`中的`craftsList`方法。 ```groovy <g:link controller="planning" action="craftsList" id="${productionNoInstance.findPlan().id}">工艺表</g:link> ``` 2. **控制器Action:** 在`PlanningController.groovy`文件中新增一个名为`craftsList`的方法,该方法用于显示特定生产计划下的所有工艺表信息。核心逻辑如下: - 获取传入的生产计划ID,并通过`Planning.get()`方法获取生产计划实例。 - 如果未找到相应的生产计划,则显示错误消息并重定向到列表页面。 - 如果找到了生产计划,则返回包含该生产计划实例的模型数据。 示例代码如下: ```groovy def craftsList = { def planningInstance = Planning.get( params.id ) if(!planningInstance) { flash.message = "Planning实例为空,id:${params.id}" redirect(action:list) } else { return [ planningInstance : planningInstance ] } } ``` #### 三、构建新的视图页面 **知识点:** 视图页面构建、GSP模板继承 1. **创建新视图页面:** 在`grails-app/views/planning`目录下创建一个新的视图页面`craftsList.gsp`,可以参考已有的`materialList.gsp`页面进行修改。 2. **页面元素:** 页面中包含了两个按钮:“删除”和“添加”。这两个按钮分别对应控制器`crafts`中的`delete`和`create`方法。 #### 四、实现数据操作 **知识点:** 数据持久化操作、异常处理 1. **删除操作:** 实现了一个名为`delete`的方法,其主要逻辑是: - 根据传入的ID获取工艺实例。 - 如果找到了该工艺实例,则尝试删除它,并从对应的生产计划中移除。 - 删除成功后,显示提示消息并重定向回`craftsList`页面。 示例代码如下: ```groovy def delete = { def crafts = Crafts.get( params.id ) def planning = Planning.get(params.planningId) if(crafts) { try { crafts.delete() if(planning) { planning.delCrafts(crafts) planning.save() } flash.message = "从工艺表中删除工艺成功!" redirect(controller:'planning',action:'craftsList',id:params.planningId) } catch(org.springframework.dao.DataIntegrityViolationException e) { flash.message = "Crafts ${params.id} could not be deleted" redirect(action:show,id:params.id) } } else { flash.message = "Crafts not found with id ${params.id}" redirect(action:list) } } ``` 2. **添加操作:** 实现了一个名为`create`的方法,用于创建新的工艺记录。 通过以上步骤,我们不仅完成了加工费录入页面的设计,还增强了生产计划列表的功能,实现了对工艺表数据的基本增删操作。这些实践不仅能够帮助读者理解Grails框架的核心概念,还能为实际项目开发打下坚实的基础。

- 粉丝: 5216
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


