有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring如何在JavaSAPHybris中解析NoSuchElement:null?

我创建了一个操作,将一个值修改为一个或多个项目(订单),状态为“等待手动导出”的订单修改为“导出”,现在,当我选择订单并单击“操作”按钮时,没有任何更改,并且在日志中出现以下错误:

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);
    }

}

共 (1) 个答案

  1. # 1 楼答案

    以下几行:

    ...
    businessProcessService.triggerEvent(hashSet.iterator().next().getOrderProcess().iterator().next().getCode() + "_" + "SaitManualExportEvent" ); //line 37 that generate error.
    Messagebox.show(POPUP_MESSAGE);
    return new ActionResult<>(ActionResult.SUCCESS);
    ...
    

    应更改为,类似于:

    ...
    if (hashSet.iterator().hasNext())
    {
        // NOTE: Don't know the data type returned by getOrderProcess(), so
        //       assumed a dummy data type OrderProcess 
        OrderProcess o = hashSet.iterator().next().getOrderProcess();
        if (o.iterator().hasNext())
        {
            businessProcessService.triggerEvent(o.iterator().next().getCode() + "_" + "SaitManualExportEvent" );
            Messagebox.show(POPUP_MESSAGE);
            return new ActionResult<>(ActionResult.SUCCESS);
        }
    }
    ...