0

我想在 hybris 后台创建一个自定义小部件,这将允许从磁盘导入 CSV 文件,并且 CSV 文件中的数据将用于将数据插入数据库。但是,据我发现,hybris 只允许从其媒体容器上传文件。

https://help.hybris.com/6.0.0/hcd/8babc4778669101493e3e9234f73106a.html

“默认文件上传编辑器使您能够从现有媒体上传和下载二进制内容。”

这使得它非常麻烦 - 首先将文件上传到媒体,然后才从媒体中选择上传的文件以在我的自定义小部件中使用它。

是否可以克服这个问题并直接从磁盘上传文件?

4

2 回答 2

1

我正在回答我自己的问题,有人可能有类似的问题 - 似乎 Hybris 文档的上述引用具有误导性 - 如果您使用默认文件上传编辑器,它将允许您从磁盘中选择一个文件。

例如在您的小部件的 zul 文件中:

<editor id="yourCustomEditorId" type="java.io.File" defaultEditor="com.hybris.cockpitng.editor.defaultfileupload" />

将创建两个默认按钮 - 上传和重置

在您的控制器中,您将添加

private Editor yourCustomEditorId;

您可以从中获取 FileUploadResult:

FileUploadResult fileUploadResult = (FileUploadResult) yourCustomEditorId.getValue();
于 2018-05-31T11:24:42.437 回答
0

*backoffice-config.xml 中的典型 CSV 文件配置

            <wz:property qualifier="csvFile" type="com.hybris.cockpitng.editor.defaultfileupload.FileUploadResult" 
                             editor="com.hybris.cockpitng.editor.dndfileupload" validate="false">
                    <wz:editor-parameter>
                        <wz:name>accept</wz:name>
                        <wz:value>text/csv</wz:value>
                    </wz:editor-parameter>
            </wz:property>

在您的操作中访问它们的典型方式(假设您在后台向导中使用模板 bean)

final DefaultWidgetModel productUploadModel = (DefaultWidgetModel) adapter.getWidgetInstanceManager().getModel();

        final ProductUploadWizardForm productUpload = productUploadModel.getValue("PRODUCT_UPLOAD",
                ProductUploadWizardForm.class);

            final FileUploadResult fileUploadResult = productUploadModel
                    .getValue("PRODUCT_UPLOAD" + ".csvFile",
                    FileUploadResult.class);
LOG.info("Value of fileUploadResult.name:" + fileUploadResult.getName());

LOG.info("Print the contents->"+new String(fileUploadResult.getData(), StandardCharsets.UTF_8));
于 2020-07-07T06:38:34.467 回答