我面临的问题是,当客户试图将物品添加到购物车中时,在Controller的这行代码中会引发NullPointerException
CustomerCart customercart = customer.getCustomercart();
addItemToCart是我的控制器方法
@RequestMapping("/customerreqAddItemToCart/{xps_id}")
public String addItemToCart(@PathVariable("xps_id")String xps_id,@RequestParam("qty")int qty,Principal principal,HttpSession hsession,Model m){
System.out.println("xps_id : "+xps_id + " qty : " + qty);
String customerid=principal.getName();
System.out.println(customerid);
Customer customer =cuss.getCustomerByUserId(customerid);
CustomerCart customercart = customer.getCustomercart();
Xmap_ps xmap_ps = xpss.getXPSbyId(xps_id);
CustomerCartItems cartitem = new CustomerCartItems();
cartitem.setCustomercart(customercart);
cartitem.setXmap_ps(xmap_ps);
cartitem.setCus_cartquantity(qty);
cartitem.setCus_cartitemwisetotal(xmap_ps.getXps_price()*qty);
/*cartitem.setProduct_id(xmap_ps.getProduct_id());
cartitem.setSupplier_id(xmap_ps.getSupplier_id());*/
ccis.addCartItem(cartitem);
Customer customer1=cuss.getCustomerByUserId(customerid);
CustomerCart cart1=customer1.getCustomercart();
int cartsize = ccss.getCartSize(cart1);
List<CustomerCartItems> cartitems = cart1.getCustomercartitems();
int sum=0;
for(CustomerCartItems critem :cartitems){
sum+= critem.getCus_cartitemwisetotal();
}
cart1.setCus_cartgrandtotal(sum);
ccss.updateCart(cart1);
List<VwXmapPS> xpsdata = vxpss.getBestVwPs();
m.addAttribute("xpsdata", xpsdata);
m.addAttribute("customername",hsession.getAttribute("customername"));
m.addAttribute("customerid",hsession.getAttribute("customerid"));
m.addAttribute("cartsize",hsession.getAttribute("cartsize"));
m.addAttribute("cartmessage","Item added to cart successfully");
hsession.setAttribute("cartsize", cartsize);
System.out.println("cart size :" + cartsize);
return "redirect:/reqdisplaycustomerhomepage";
}
让我也和大家分享我的模型课
@Entity
public class CustomerCart {
@Id
private String cus_cartid;
private double cus_cartgrandtotal;
@OneToOne(mappedBy="customercart")
private Customer customer;
@OneToMany(mappedBy="customercart", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private List<CustomerCartItems> customercartitems;
@Entity
public class CustomerCartItems {
@Id
private String cus_cartitemid;
private int cus_cartquantity;
private int cus_cartitemwisetotal;
@ManyToOne
@JoinColumn(name="cus_cartid")
private CustomerCart customercart;
@ManyToOne
@JoinColumn(name="xps_id")
private Xmap_ps xmap_ps;
3.还有Customer模型类,它具有与其他表的所有外键关系
@Entity
public class Customer {
@Id
private String cus_id;
private String cus_name;
private String cus_emailid;
private String cus_mobileno;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="cus_loginid")
private CustomerDetails customerdetails;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="cus_billingaddressid")
private CustomerBillingAddress customerbillingaddress;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="cus_shippingaddressid")
private CustomerShippingAddress customershippingaddress;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="cus_cartid")
private CustomerCart customercart;
谢谢你花时间帮助我<3
这真的像你认为的那样吗?:
String customerid=principal.getName();
它不认为它会给出数据库中的ID
字段值。您可以将登录用户的Id存储在会话中,或者将其作为来自JSP的请求参数。
调试它,您将看到customer
为null。
问题内容: 嗨,Java中有什么方法可以获取静态通用类类型 我结束了构建 我想知道是否存在类似的东西: (我真的不想构造新的对象只是为了获得其类型) 谢谢 问题答案: 由于所有类实际上在运行时都对应于同一类,因此可以这样做: 但是由于某种原因,Java不喜欢它。用String尝试过: 好吧,那我们就傻了吧: 这很愚蠢,但是有效。它会产生“未经检查”的警告,但是您的示例也是如此。请注意,尽管如此,它
我正在尝试为Swagger中的项目获取模型模式。我想通过一个http请求来实现这一点,该请求来自不同于托管Swagger的机器。 我可以从以下位置获取作为json的Swagger API文档: 该响应包含: 是否有任何方法获取“/definitions/Item”模型模式? 我想做一个http获取,比如: 我使用的是Swagger 2.0版。 谢谢
如何获取这个类的类型?对于上下文,我使用ModelMapper,我需要类类型T从S转换为T。 背景: 我已经尝试了N种方法,其中我放置了“//一些方法来获取类型”,但没有任何效果。例如: 或
我是Dart/Flutter的新手,我正在努力获得一个消耗网络服务的未来的结果: 在init状态下,我调用此函数,因此我可以使用此结果构建布局: 我总是得到这个例外: 你知道我做错了什么吗? 谢啦
问题内容: 我有一个列表,程序是这样的:。有什么方法可以使用T变量获取类的名称(因此我可以从内部知道T是否为String,Socket等)? 编辑:没关系,在这里找到了答案。 问题答案: 简短答案 :您不能。 长答案 : 由于使用Java实现泛型的方式,泛型T在运行时不会保留。您仍然可以使用私有数据成员: 用法示例:
问题内容: 我在使用泛型时遇到麻烦。给出以下示例: 什么 ???应该 ? 不工作… 也不。 不工作… 如果有Java泛型专家,我需要帮助…:/ 问题答案: 由于类型擦除,您可能无法获得除外。你将不得不使用不安全的类型转换投下的-具体而言,将做的工作。