后台:编辑器区域中的CSV上传功能

问题描述

SAP Commerce 1811

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

因此,我使用了com.hybris.cockpitng.editor.dndfileupload类型的OOTB 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”并在“ CustomType”的editorareaactions中进行配置。

就像我上载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”的值。

有帮助吗?

解决方法

我只用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);
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...