2023-01-06
一、修改购物车数量
(1)找到文本框的位置,“cart.html”中的第60行,在文本框上添加一个事件,添加一个“change”事件。
<input class="count-num" type="text" v-model="cartItem.count" @change="changeCount" :name="cartItem.book.bookId"/>
(2)在Vue中的“methods”添加一个函数
changeCount:function(){
//需要将当前购物项的图书id取到,还需要将用户修改后的数量取到
var id=event.target.name;
var newCount=event.target.value;
axios({
method:"post",
url:"cart",
params:{
flag:changeCount,
id:id,
newCount:newCount
}
})
},
(3)在“Cart.java”中创建一个方法
/**
* 对购物项的数量进行修改的操作
* @param id
*/
public void changeCount(Integer id,Integer newCount){
CartItem item = map.get(id);
item.setCount(newCount);
}
(4)在“CartServlet.java”中创建一个“changeCount”方法
protected void changeCount(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获得请求参数
String id = request.getParameter("id");
String newCount = request.getParameter("newCount");
//2.获得购物车对象
HttpSession session = request.getSession();
Cart cart = (Cart)session.getAttribute("cart");
//3.调用cart对象中的方法,对购物项的数量进行修改操作
cart.changeCount(Integer.parseInt(id),Integer.parseInt(newCount));
//4.后台的数据已经刷新完毕,前台的数据还未刷新,通过调用showCart把前台的数据刷新
showCart(request,response);
}
(5)完善“Cart.html”中Vue中“methods”中的函数
changeCount:function () {
//需要将当前购物项的图书id取到,还需要将用户修改后的数量取到
var id=event.target.name;
var newCount=event.target.value;//做一个正则验证:必须是大于0的整数
//alert(id+" "+newCount);
axios({
method:"post",
url:"cart",
params:{
flag:"changeCount",
id:id,
newCount:newCount
}
}).then(response=>{
if(response.data.flag){
//alert(response.data.resultData[0]);
//需要将后台传过来的数据,展示在网页上(vue的方式)
this.cartItems=response.data.resultData[0];
this.totalCount=response.data.resultData[1];
this.totalAmount=response.data.resultData[2];
}
})
}
},
(6)结果:刷新服务器,在弹出的页面中,将一些图书添加到购物车中。点击“购物车”图标,之后修改购物项中的数量,在失去焦点后,该购物项的金额、商品数量、总金额会发生变化,此时代码OK。此时未设置正则验证,可能会出现非法字符的情况。
二、精度问题的处理
点击购物车图标后,当改变某些图书的数量后,主要修改购物项金额的精度和总金额的精度。
1、购物项的金额
(1)在“CartItem.java”中修改“amount”的计算,分别在“setCount”、“CartItem”、“setBook”中进行修改
public void setBook(Book book) {
this.book = book;
//设置图书的时候,计算金额
BigDecimal price=new BigDecimal(this.book.getPrice()+"");//使用字符串的构造器
BigDecimal count = new BigDecimal(this.count+"");
this.amount=price.multiply(count).doubleValue();
}
public void setCount(Integer count) {
this.count = count;
//设置数量,将amount算出来
BigDecimal price=new BigDecimal(this.book.getPrice()+"");//使用字符串的构造器
BigDecimal count1 = new BigDecimal(this.count+"");
this.amount=price.multiply(count1).doubleValue();
}
public CartItem(Book book, Integer count) {
this.book = book;
this.count = count;
//有参构造器,计算amount
BigDecimal price=new BigDecimal(this.book.getPrice()+"");//使用字符串的构造器
BigDecimal count1 = new BigDecimal(this.count+"");
this.amount=price.multiply(count1).doubleValue();
}
2、购物车的总金额
在“Cart.java"中修改“计算中金额”
1 /**
2 * 功能:计算总金额
3 * @return
4 */
5 public Double getTotalAmount(){
6 Collection<CartItem> values = map.values();//得到的是CartItem对象的集合
7 BigDecimal total = new BigDecimal("0");
8 for (CartItem value : values) {
9 BigDecimal amount = new BigDecimal(value.getAmount()+"");
10 //将amount累加到total上
11 total=total.add(amount);
12 }
13 this.totalAmount=total.doubleValue();
14 return totalAmount;
15 }
注意:在“getTotalAmount()”函数的第9行中一定是要使用BigDecimal的字符串构造器后面要加上 +“”。如果忘记加这个,刷新服务器后,将购物车中的购物项数量增加,总金额的精度仍然保持不到小数点后两位。加上之后,精度就会保持在小数点后两位。
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路