Backoffice: функция загрузки CSV в области редактора
SAP Commerce 1811
У меня есть один настраиваемый тип, например CustomType, у которого есть один медиа-атрибут типа MediaModel. Мое требование - загрузить медиафайлы CSV с помощью редактора Drag & Drop в области редактора.
Итак, я использовал OOTB com.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>
Теперь я создал одно настраиваемое действие Backoffice, например "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" значение там.
Любая помощь?
0 ответов
Я решил проблему простым приведением типа
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);
}