1.参考Grails实现复杂的数据录入,实现了为图书添加相关图书的功能,但是在随后的测试中
发现了一些问题,现将这些问题列举出来,
(1)当进入新建页面的时候,什么数据也不填,点击保存按钮,如果你在domain类中添加了约
束条件,如果按照正常的情况是应该在页面上显示报错信息。但是此时页面没有报错,但是数
据也没录入,该怎样解决这个问题了。
例如当保存不成功时我们返回到添加页面,如果你的代码类似这样的话
render(view:"create")或者redirect(action:"create")这时就会出现上面的问题。
解决办法,我们在controller中判断保存是否成功的逻辑中假如如下代码:
将代码修改成为
render(view: "newedit", model: [bookInstance: book])
注意红字部分,保存代码,运行程序,重复上边的步骤。这时会在页面上显示报错信息。
(2)如果我们进入编辑页面的话,此时你会发现页面没数据。这问题可以这样解决,原代码如
下:
def edit={
book=Book.get(params.id)
}
我们将其修改如下:
def edit = {
def bookInstance
if(params.id){//如果有参数,则表明是要进入编辑页面
bookInstance = Book.get(params.id)
}else{//没有参数,则表示新建
bookInstance = new Book()
bookInstance.properties = params
}
return [bookInstance: bookInstance]//得返回这个,否则在编辑页面没值
}
注意红字部分。
ok,保存代码,运行程序,再次进入编辑页面就会出现数据了。
(3)如果我们浏览某本书的详细页面,相关图书那里会有一些问题,出现的数据会有中括号包起
来,如下图所示:
解决方法如下:我们可以写一个循环把它的值取出然后显示出来,正好grails给我们提供了
<g:each>标签,示例如下:
<g:each in="${bookInstance?.relativeBooks}" var="relativeBooks">
<li>${relativeBooks.cName}</li>
</g:each>
ok,保存代码,运行程序,效果如下,当然你可以给给它的显示样式做下改变,这就涉及到
CSS了,这里就不做讨论了。
ps:这是最近遇见的一个问题,在测试页面时发现,当我编辑一个图书时,我将该图书的相关
图书删除一些后,然后点击保存,然后再查看该图书的详细信息时发现,该图书的相关图书没
有改变,还是原来的那些,如果我在编辑时,删除一些相关图书,然后再添加一些的话,再查
看详细图书时,发现相关图书会出现混乱,一本书可能出现两次,通过在控制台打印信息发
现,该图书的相关图书,Book.relativeBooks,例如你新建的一本书的相关图书有3本,那么
这个Book.relativeBooks的长度为3,这个长度只能增加,不会再减少。仔细检查代码,最终
找到了解决方法。
def edit = {
def bookInstance
if(params.id){//如果有参数,则表明是要进入编辑页面
bookInstance = Book.get(params.id)
}else{//没有参数,则表示新建
bookInstance = new Book()
book.relativeBooks = null//将其相关图书清空
bookInstance.properties = params
}
return [bookInstance: bookInstance]//得返回这个,否则在编辑页面没值
}
在原action中加入红色字体的代码,现将相关图书清空,然后再利用properties属性,为
book赋值。
ok再次测试程序,这次程序没有问题了。
相关推荐
3. 功能模块:每个功能对应一个或多个函数实现,如`add_book()`用于添加图书,`display_books()`用于展示所有图书,`search_book()`用于按特定条件查找图书,`borrow_book()`和`return_book()`分别处理借阅和归还...
7. 表单验证:本文使用了简单的表单验证机制来确保添加图书时的合法性,包括检查书名、作者和价格是否为空等。 8. DOM操作:本文使用了DOM操作来实现图书列表的渲染和更新,包括使用innerHTML属性来设置表格行的...
1. 添加图书:在后台管理界面,管理员可以输入新书信息并将其存储到数据库中。这一过程涉及到Java的用户界面设计(如Swing或JavaFX)以及与数据库的交互。 2. 借阅功能:用户选择要借阅的书籍后,系统会检查图书的...
下面将详细介绍这些功能的实现及相关的技术知识点。 1. **图书增加**:在系统中添加新图书时,通常需要输入如书名、作者、出版社、出版日期、ISBN号等信息。这些数据会被存储到数据库中。Java提供了丰富的数据处理...
第一个较大的Android项目,基于Android平台的图书管理系统 涉及到的功能有学生注册、工作人员注册、图书馆介绍、图书馆新闻、学生、工作人员登录、 书籍搜索、学生借还书、工作人员添加书籍、新书榜单、借书排行榜、...
这个简单的Java图书管理系统实现了图书的添加和查询功能,通过面向对象编程的方式,让我们能够更好地管理和操作图书信息。当然,这只是一个基础版本,你可以根据自己的需求进一步扩展和优化,例如加入图书删除、修改...
2.设计实现一个图书管理系统。图书信息存放到一个数据库中。图书包含信息:图书号、图书名、作者、价格、备注字段。 要求:基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库...
这个系统可以实现一些基本的功能,比如添加、删除、修改和浏览图书信息,为用户提供了一个方便的交互界面。虽然描述中提到这个系统只实现了部分功能,但其设计思路和基础结构对于理解Java编程以及如何构建数据库驱动...
- **购物车功能**:用户可以选择书籍加入购物车,购物车的实现需要在用户会话中存储选择的书籍信息,JSP通过Session对象来实现这一功能。 - **登录功能**:管理员和普通会员的登录逻辑可能有所不同,通常涉及验证...
4. **接口设计**:图书操作部分采用了接口来实现,如添加、借出、删除、展示、退出、查找和返回等功能。接口在Java中定义了一组方法签名,但不包含具体的实现。类可以实现接口,从而承诺实现这些方法。这种方式提高...
【JSP实现的图书购物网站】是一个基于JavaServer Pages(JSP)技术构建的在线图书销售平台。这个网站提供了一个用户友好的界面,允许用户浏览书籍、选择购买,并且能够进行网上支付。同时,它还包含一个后台管理系统...
3. 修改记录 函数CRecordSet::Edit可以用来修改记录,例如: m_pSet->Edit(); // 修改当前记录 m_pSet->m_name="刘向东"; // 修改当前记录字段值 ...... m_pSet->Update(); // 将修改结果存入数据库 ...
后台管理系统主要负责图书的添加、编辑、删除等库存管理,以及订单处理、用户管理等功能。这部分通常需要管理员登录后才能访问。管理员可以通过BookSelManager相关的接口对图书信息进行维护,如增加新书、调整价格、...
实现添加与删除图书功能是前端开发中常见的功能需求,下面将详细解析使用Vue.js实现该功能的知识点。 首先,我们需要了解Vue.js的基本概念。Vue.js的核心库只关注视图层,易于上手,同时也可以与其它库或现有项目...
根据给定的文件信息,我们可以总结出以下关于“C语言实现图书管理系统”的相关知识点: ### 一、系统概述 此图书管理系统是通过C语言编写的,主要实现了对图书的查找、删除、添加以及排序等功能。该系统对于学校的...
读者:登录注册,借阅还书,查询书籍,查看当前借阅信息以及历史借阅信息,查看、查询借阅书籍借阅榜等功能。 管理员:对图书、图书分类、读者信息的增删改查,查看全部读者当前借阅信息以及借阅历史等信息。
`insert.cpp`实现了添加书籍的功能。它可能会包含一个函数,接收用户输入的信息,并创建一个新的`Book`对象,然后将其添加到图书库(通常是一个`vector`或`list`等容器)中。这里涉及到C++的动态内存管理,如`new`和...
3. **添加图书**:添加图书涉及创建新的`Book`实例,并将其保存到数据库中。在C#中,这可能通过创建一个表单,用户输入图书信息,然后在后台调用数据库的INSERT语句完成。为了确保数据一致性,事务处理是必要的,C#...