我想在hybris后台创建一个自定义小部件,它允许从磁盘导入CSV文件,CSV文件中的数据将用于将数据插入数据库。但是,根据我的发现,hybris只允许从其媒体容器上传文件。
https://help.hybris.com/6.0.0/hcd/8babc4778669101493e3e9234f73106a.html
"默认文件上传编辑器可让您从现有媒体上传和下载二进制内容。"
这使得它非常麻烦 - 首先将文件上传到媒体,然后从Media中选择上传的文件以在我的自定义小部件中使用它。
是否可以克服此问题并直接从磁盘上传文件?
答案 0 :(得分:1)
我回答了我自己的问题,有人可能会遇到类似的问题 - 似乎上面引用Hybris文档会产生误导 - 如果您使用默认文件上传编辑器,它将允许您从磁盘中选择一个文件。
e.g。 在你的小部件的zul文件中:
<editor id="yourCustomEditorId" type="java.io.File" defaultEditor="com.hybris.cockpitng.editor.defaultfileupload" />
将创建两个默认按钮 - 上传和重置
在您的控制器中,您将添加
private Editor yourCustomEditorId;
您可以从中获取FileUploadResult:
FileUploadResult fileUploadResult = (FileUploadResult) yourCustomEditorId.getValue();
答案 1 :(得分: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>
在操作中访问它们的典型方法(假设您正在Backoffice向导中使用模板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));