【发布时间】:2021-12-31 22:10:10
【问题描述】:
我创建了一个将值修改为一个或多个项目(订单)的操作,将状态“等待手动导出”的订单变为“导出”,现在当我选择订单并单击操作按钮时,没有任何变化并进入记录我有这个错误:
ERROR [hybrisHTTP33] [ManualOrderExportAction]
ERROR: java.util.NoSuchElementException: null
at java.util.Collections$EmptyIterator.next(Collections.java:4210) ~[?:?]
at myExtension.backoffice.actions.ManualOrderExportListAction.perform(ManualOrderExportListAction.java:37) [?:?]
代码:
@Resource(name = "businessProcessService")
private BusinessProcessService businessProcessService;
@Override
public ActionResult<Object> perform(ActionContext<Object> actionContext){
HashSet<OrderModel> hashSet = (HashSet<OrderModel>) actionContext.getData();
try
{
businessProcessService.triggerEvent(hashSet.iterator().next().getOrderProcess().iterator().next().getCode() + "_" + "SaitManualExportEvent" ); //line 37 that generate error.
Messagebox.show(POPUP_MESSAGE);
return new ActionResult<>(ActionResult.SUCCESS);
}
catch (final Exception ex)
{
LOG.error("ERROR: ", ex);
return new ActionResult<>(ActionResult.ERROR);
}
}
【问题讨论】:
-
您的
hashSet.iterator()中没有元素 -
或者
hashSet.iterator().next().getOrderProcess().iterator()没有元素。 -
我激活 debug 并且 hashSet 具有我选择到 Backoffice 应用程序中的元素。
-
@kiner_shah 我该如何解决?
-
那么在这种情况下,请执行
while(iterator.hasNext()){ iterator.next());,这样您在调用.next()之前首先验证您有一个“nextElement”
标签: java spring iterator hybris