当前位置: 首页 > 知识库问答 >
问题:

Spring MVC-获取模型类的NullPointerException

白浩荡
2023-03-14

我面临的问题是,当客户试图将物品添加到购物车中时,在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";


    }

让我也和大家分享我的模型课

  1. CustomerCartItems模型类与CustomerCartItems模型类具有一对多关系的CustomerCart模型类
@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

共有1个答案

邬安邦
2023-03-14

这真的像你认为的那样吗?:

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泛型专家,我需要帮助…:/ 问题答案: 由于类型擦除,您可能无法获得除外。你将不得不使用不安全的类型转换投下的-具体而言,将做的工作。