- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在创建网络应用程序,客户可以在其中购物并将产品添加到购物车中。当我尝试确认订单时,我收到“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 - ₹ ${cartLine.buyingPrice}/-</h5>
</div>
<hr/>
<div class="text-right">
<h3>Grand Total - ₹ ${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"> ₹ ${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]
日志文件
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/
reqwest v0.9 将 serde v1.0 作为依赖项,因此实现 converting serde_json errors into reqwest error . 在我的代码中,我使用 se
我有这个代码: let file = FileStorage { // ... }; file.write("Test", bytes.as_ref()) .map_err(|e| Mu
我只是尝试用angular-cli创建一个新项目,然后运行服务器,但是它停止并显示一条有趣的消息:Error: No errors。 我以这种方式更新了(希望有帮助):npm uninstall -g
我从我的 javascript 发送交易 Metamask 打开传输对话框 我确定 i get an error message in metamask (inpage.js:1 MetaMask -
这个问题在这里已经有了答案: How do you define custom `Error` types in Rust? (3 个答案) How to get a reference to a
我想知道两者之间有什么大的区别 if let error = error{} vs if error != nil?或者只是人们的不同之处,比如他们如何用代码表达自己? 例如,如果我使用这段代码: u
当我尝试发送超过 50KB 的图像时,我在 Blazor 服务器应用程序上收到以下错误消息 Error: Connection disconnected with error 'Error: Serv
我有一个error-page指令,它将所有异常重定向到错误显示页面 我的web.xml: [...] java.lang.Exception /vi
我有这样的对象: address: { "phone" : 888, "value" : 12 } 在 WHERE 中我需要通过 address.value 查找对象,但是在 SQL 中有函数
每次我尝试编译我的代码时,我都会遇到大量错误。这不是我的代码的问题,因为它在另一台计算机上工作得很好。我尝试重新安装和修复,但这没有帮助。这是整个错误消息: 1>------ Build starte
在我的代码的类部分,如果我写一个错误,则在不应该的情况下,将有几行报告为错误。我将'| error'放在可以从错误中恢复的良好/安全位置,但是我认为它没有使用它。也许它试图在某个地方恢复中间表情? 有
我遇到了 csv 输入文件整体读取故障的问题,我可以通过在 read_csv 函数中添加 "error_bad_lines=False" 来删除这些问题来解决这个问题。 但是我需要报告这些造成问题的文
在 Spring 中,验证后我们在 controller 中得到一个 BindingResult 对象。 很简单,如果我收到验证错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。 因此
我不知道出了什么问题,因为我用 Java 编程了大约一年,从来没有遇到过这个错误。在一分钟前在 Eclipse 中编译和运行工作,现在我得到这个错误: #A fatal error has been
SELECT to_char(messages. TIME, 'YYYY/MM/DD') AS FullDate, to_char(messages. TIME, 'MM/DD
我收到这些错误: AnonymousPath\Anonymized.vb : error BC30037: Character is not valid. AnonymousPath\Anonymiz
我刚刚安装了 gridengine 并在执行 qstat 时出现错误: error: commlib error: got select error (Connection refused) erro
嗨,我正在学习 PHP,我从 CRUD 系统开始,我在 Windows 上安装了 WAMP 服务器,当我运行它时,我收到以下错误消息。 SCREAM: Error suppression ignore
我刚刚开始一个新项目,我正在学习核心数据教程,可以找到:https://www.youtube.com/watch?v=zZJpsszfTHM 我似乎无法弄清楚为什么会抛出此错误。我有一个名为“Exp
当我使用 Jenkins 运行新构建时,出现以下错误: "FilePathY\XXX.cpp : fatal error C1853: 'FilePathZ\XXX.pch' precompiled
我是一名优秀的程序员,十分优秀!