gpt4 book ai didi

java - spring boot “Whitelabel Error Page” 无可用消息

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:28 25 4
gpt4 key购买 nike

我正在创建网络应用程序,客户可以在其中购物并将产品添加到购物车中。当我尝试确认订单时,我收到“Whitelabel 错误页面”。我写的是结帐流程。当我点击付款按钮时,它将显示确认订单并显示购物车详细信息。但是当我单击“付款”按钮时,它显示白标错误页面。请告诉我为什么会收到此错误。

checkout-flow.xml

    <?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow
http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">


<var name="shipping" class="net.kzn.shoppingbackend.dto.Address"/>

<on-start>
<evaluate expression="checkoutHandler.init(currentUser.name)" result="flowScope.checkoutModel"/>
</on-start>

<!-- view the address selection page-->
<view-state id="shipping" view="order-address.jsp" model="shipping">
<on-entry>
<evaluate expression="checkoutHandler.getShippingAddresses(flowScope.checkoutModel)" result="viewScope.addresses"/>
</on-entry>
<transition on="addressSelection" to="saveAddressSelection" validate="false"/>
<transition on="saveAddress" to="saveAddress" />
</view-state>

<!-- action state to save the address -->
<action-state id="saveAddressSelection">
<evaluate expression="checkoutHandler.saveAddressSelection(flowScope.checkoutModel, requestParameters.shippingId)" />
<transition on="success" to="payment" />
</action-state>


<!-- action state to save the address -->
<action-state id="saveAddress">
<evaluate expression="checkoutHandler.saveAddress(flowScope.checkoutModel, shipping)" />
<transition on="success" to="payment" />
</action-state>

<!-- view the payment mode page-->
<view-state id="payment" view="order-payment.jsp" model="flowScope.checkoutModel">
<transition on="pay" to="saveOrder" />
</view-state>

<!-- action state to save the address -->
<action-state id="saveOrder">
<evaluate expression="checkoutHandler.saveOrder(flowScope.checkoutModel)" />
<transition on="success" to="receipt"/>
</action-state>

<!-- end state -->
<end-state id="receipt" view="order-confirm.jsp">
<on-entry>
<evaluate expression="checkoutHandler.getOrderDetail(flowScope.checkoutModel)" result="requestScope.orderDetail"/>
</on-entry>
</end-state>

<end-state id="home" view="externalRedirect:contextRelative:/home" />
<end-state id="error" view="flows/flows-shared/error" />

<!-- global transition -->
<global-transitions>
<transition on="home" to="home" validate="false" />
<transition on-exception="java.lang.Exception" to="error" />
</global-transitions>

</flow>

order- payment.jsp

    <%@include file="../../flows-shared/header.jsp" %>
<div class="container mt-5">

<div class="row">
<!-- To display all the goods -->
<div class="col-md-6">

<div class="row">
<c:forEach items="${checkoutModel.cartLines}" var="cartLine">
<div class="col-12">

<div>
<h3>${cartLine.product.name}</h3>
<hr/>
<h4>Quantity -${cartLine.productCount}</h4>
<h5>Buying Price - &#8377; ${cartLine.buyingPrice}/-</h5>
</div>
<hr/>
<div class="text-right">
<h3>Grand Total - &#8377; ${cartLine.total}/-</h3>
</div>
</div>
</c:forEach>
</div>


</div>

<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">
Payment Details
</h3>
</div>
<div class="card-body">
<form role="form">
<div class="form-group">
<label for="cardNumber">
CARD NUMBER</label>
<div class="input-group">
<input type="text" class="form-control" id="cardNumber" placeholder="Valid Card Number"
required autofocus />
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
</div>
</div>
<div class="row">

</div>
</form>
</div>
</div>
<ul class="nav nav-pills nav-stacked">
<li class="active"><a href="#"><span class="badge pull-right"> &#8377; ${checkoutModel.checkoutTotal}/-</span> Final Payment</a></li>
</ul>
<br/>
<a href="${flowExecutionUrl}&_eventId_pay" class="btn btn-success btn-lg btn-block" role="button">Pay</a>

</div>
</div>
</div>

checkouthandler.java

    package net.kzn.onlineshopping.handler;

@Component
public class CheckoutHandler {

private static final Logger logger = LoggerFactory
.getLogger(CheckoutHandler.class);

@Autowired
private UserDAO userDAO;

@Autowired
private ProductDAO productDAO;

@Autowired
private CartLineDAO cartLineDAO;

@Autowired
private HttpSession session;

public CheckoutModel init(String name) throws Exception {

User user = userDAO.getByEmail(name);
CheckoutModel checkoutModel = null;

if (user != null) {
checkoutModel = new CheckoutModel();
checkoutModel.setUser(user);
checkoutModel.setCart(user.getCart());

double checkoutTotal = 0.0;
List<CartLine> cartLines = cartLineDAO.listAvailable(user.getCart()
.getId());

if (cartLines.size() == 0) {
throw new Exception(
"There are no products available for checkout now!");
}

for (CartLine cartLine : cartLines) {
checkoutTotal += cartLine.getTotal();
}

checkoutModel.setCartLines(cartLines);
checkoutModel.setCheckoutTotal(checkoutTotal);
}

return checkoutModel;
}

public String saveOrder(CheckoutModel checkoutModel) {
String transitionValue = "success";

// create a new order object
OrderDetail orderDetail = new OrderDetail();

// attach the user
orderDetail.setUser(checkoutModel.getUser());

// attach the shipping address
orderDetail.setShipping(checkoutModel.getShipping());

// fetch the billing address
Address billing = userDAO.getBillingAddress(checkoutModel.getUser()
.getId());
orderDetail.setBilling(billing);

List<CartLine> cartLines = checkoutModel.getCartLines();
OrderItem orderItem = null;

double orderTotal = 0.0;
int orderCount = 0;
Product product = null;

for (CartLine cartLine : cartLines) {

orderItem = new OrderItem();

orderItem.setBuyingPrice(cartLine.getBuyingPrice());
orderItem.setProduct(cartLine.getProduct());
orderItem.setProductCount(cartLine.getProductCount());
orderItem.setTotal(cartLine.getTotal());

orderItem.setOrderDetail(orderDetail);
orderDetail.getOrderItems().add(orderItem);

orderTotal += orderItem.getTotal();
orderCount++;

// update the product
// reduce the quantity of product
product = cartLine.getProduct();
product.setQuantity(product.getQuantity()
- cartLine.getProductCount());
product.setPurchases(product.getPurchases()
+ cartLine.getProductCount());
productDAO.update(product);

// delete the cartLine
cartLineDAO.remove(cartLine);

}

orderDetail.setOrderTotal(orderTotal);
orderDetail.setOrderCount(orderCount);
orderDetail.setOrderDate(new Date());

// save the order
cartLineDAO.addOrderDetail(orderDetail);

// set it to the orderDetails of checkoutModel
checkoutModel.setOrderDetail(orderDetail);

// update the cart
Cart cart = checkoutModel.getCart();
cart.setGrandTotal(cart.getGrandTotal() - orderTotal);
cart.setCartLines(cart.getCartLines() - orderCount);
cartLineDAO.updateCart(cart);

// update the cart if its in the session
UserModel userModel = (UserModel) session.getAttribute("userModel");
if (userModel != null) {
userModel.setCart(cart);
}

return transitionValue;
}

public OrderDetail getOrderDetail(CheckoutModel checkoutModel) {
return checkoutModel.getOrderDetail();
}

}

CartController.java

    package net.kzn.onlineshopping.controller;

@Controller
@RequestMapping("/cart")
public class CartController {

private final static Logger logger = LoggerFactory.getLogger(CartController.class);

@Autowired
private CartService cartService;

@RequestMapping("/show")
public ModelAndView showCart(@RequestParam(name = "result", required = false) String result) {

ModelAndView mv = new ModelAndView("page");
mv.addObject("title", "Shopping Cart");
mv.addObject("userClickShowCart", true);

if (result != null) {
switch (result) {
case "added":
mv.addObject("message", "Product has been successfully added inside cart!");
cartService.validateCartLine();
break;
case "unavailable":
mv.addObject("message", "Product quantity is not available!");
break;
case "updated":
mv.addObject("message", "Cart has been updated successfully!");
cartService.validateCartLine();
break;
case "modified":
mv.addObject("message", "One or more items inside cart has been modified!");
break;
case "maximum":
mv.addObject("message", "Maximum limit for the item has been reached!");
break;
case "deleted":
mv.addObject("message", "CartLine has been successfully removed!");
break;

}
} else {
String response = cartService.validateCartLine();
if (response.equals("result=modified")) {
mv.addObject("message", "One or more items inside cart has been modified!");
}
}

mv.addObject("cartLines", cartService.getCartLines());
return mv;

}

@RequestMapping("/{cartLineId}/update")
public String udpateCartLine(@PathVariable int cartLineId, @RequestParam int count) {
String response = cartService.manageCartLine(cartLineId, count);
return "redirect:/cart/show?" + response;
}

@RequestMapping("/add/{productId}/product")
public String addCartLine(@PathVariable int productId) {
String response = cartService.addCartLine(productId);
return "redirect:/cart/show?" + response;
}

@RequestMapping("/{cartLineId}/remove")
public String removeCartLine(@PathVariable int cartLineId) {
String response = cartService.removeCartLine(cartLineId);
return "redirect:/cart/show?" + response;
}

/*
* after validating it redirect to checkout if result received is success
* proceed to checkout else display the message to the user about the changes in
* cart page
*/
@RequestMapping("/validate")
public String validateCart() {
String response = cartService.validateCartLine();
if (!response.equals("result=success")) {
return "redirect:/cart/show?" + response;
} else {
return "redirect:/cart/checkout";
}
}
}

错误

            [dispatcherServlet]      : Servlet.service() for servlet [dispatcherServlet] in context with path [/onlineshopping] threw exception [Handler dispatch failed; nested exception is java.lang.StackOverflowError] with root cause

java.lang.StackOverflowError: null
at org.springframework.util.CollectionUtils.isEmpty(CollectionUtils.java:54) ~[spring-core-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.util.StringUtils.collectionToDelimitedString(StringUtils.java:1249) ~[spring-core-5.0.10.RELEASE.jar:5.0.10.RELEASE]

日志文件

Please check log file

Checkout-flow 和 checkouthandler 中是否有任何需要更改的地方。请告诉我我在这里做错了什么。

最佳答案

 return "redirect:/cart/checkout";

据我所知,这没有请求映射。添加类似内容

 @RequestMapping("/checkout")
public String checkout() {
...
}

我正在看线路

2018-12-01 20:16:30.926  INFO 11108 --- [nio-8080-exec-5] o.s.w.c.s.GenericWebApplicationContext   : Refreshing Flow ApplicationContext [cart/checkout]: startup date [Sat Dec 01 20:16:30 IST 2018]; parent: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@519e7762

关于java - spring boot “Whitelabel Error Page” 无可用消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com