0

SAP 商务 1811

我有一种自定义类型,例如“CustomType”,它有一个 MediaModel 类型的媒体属性。我的要求是使用编辑器区域中的拖放编辑器上传 CSV 媒体。

所以我使用了 OOTBcom.hybris.cockpitng.editor.dndfileupload类型com.hybris.cockpitng.editor.defaultfileupload.FileUploadResult并应用于我的媒体属性。

<attribute type="com.hybris.cockpitng.editor.defaultfileupload.FileUploadResult" editor="com.hybris.cockpitng.editor.dndfileupload" qualifier="media">
           <editor-parameter>
              <name>accept</name>
              <value>text/csv</value>
           </editor-parameter>
</attribute>

现在我创建了一个自定义后台操作,例如“UploadMedia”并配置editorareaactions为“CustomType”。

就像我上传 csv 媒体并单击我的操作一样,在我的操作控制器中,我试图获取上传的 FileUploadResult 媒体,但它总是给出空值。

@Override
public ActionResult<Object> perform(final ActionContext<TargetGroupModel> ctx)
{
    final WidgetModel model = (WidgetModel) ctx.getParameter(ActionContext.PARENT_WIDGET_MODEL);
    if (model != null)
    {
        final FileUploadResult result = model.getValue("currentObject.media", FileUploadResult.class);
        System.out.println(result.getData()); // result is always NULL
    }

    return new ActionResult<>(ActionResult.SUCCESS);
}

奇怪的是,在调试时,如果我检查 WidgetModel,我可以看到这个键“currentObject.media”,值在那里。

有什么帮助吗?

4

1 回答 1

0

我解决了这个问题,只需使用Key进行类型转换ctx.getParameter(ActionContext.PARENT_WIDGET_MODEL)Map获取值。currentObject.media

工作代码

@Override
public ActionResult<Object> perform(final ActionContext<TargetGroupModel> ctx)
{
    final Map map = (Map) ctx.getParameter(ActionContext.PARENT_WIDGET_MODEL);
    if (map != null)
    {
       final FileUploadResult result = map.get("currentObject.media");
       System.out.println(result.getData());
    }

    return new ActionResult<>(ActionResult.SUCCESS);
}
于 2020-09-10T18:20:46.647 回答