问题描述
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);
}