我想以这样的方式导入媒体:如果代码为null,那么hybris应该忽略它,否则它将通过它。这是我的Impex
INSERT_UPDATE Media;mediaFormat(qualifier);code[unique=true][allownull=true];youtubeURL;mime[default='video/mp4'];$catalogVersion;folder(qualifier)[default=images]
我有一个CSV文件,其中包含多组产品数据。有些产品有媒体,有些则没有。所以我试图在代码属性中允许null,但它不起作用。
我也检查了impex.legacy.mode=true
但没有运气。它还在抛出错误。也许它可以通过beanshell但不知道该怎么做。我不想为此编写自定义翻译器。请给我一些可能的解决方案。
答案 0 :(得分:0)
不,这是不可能的。随机尝试传统模式无济于事。
您需要重新考虑从CSV文件到Impex的转换。
答案 1 :(得分:0)
经过多次思考,除了创建自己的处理器之外,我找不到任何合适的解决方案。这是解决方案
public class MediaProcessor extends DefaultImportProcessor
{
@Override
public void init(final ImpExImportReader reader)
{
super.init(reader);
}
@Override
public Item processItemData(final ValueLine valueLine) throws ImpExException
{
Item item = null;
final ValueEntry codeEntry = valueLine.getValueEntry(2);
final String mediaCode = codeEntry.getCellValue();
if (StringUtils.isNotEmpty(mediaCode))
{
item = super.processItemData(valueLine);
}
return item;
}
}
Impex应该是这样的..
INSERT_UPDATE Media[processor=com.hybris.core.impex.processor.MediaProcessor];mediaFormat(qualifier);code[unique=true];youtubeURL;mime[default='video/mp4'];$catalogVersion;folder(qualifier)[default=images]
这不会导致救援错误。但它不会抛出Null指针异常,因为我进入我的控制台(一个大的人真的很讨厌这个)。因此,如果code = null
系统将转储该行并继续下一行。
快速黑客解决了我的问题。如果code = null(根据我的要求)
,这是一个正确的解决方案来转储完整的行一条线让一切都像魅力一样!
valueLine.resolve(item, Collections.EMPTY_LIST);
public class MediaProcessor extends DefaultImportProcessor
{
@Override
public void init(final ImpExImportReader reader)
{
super.init(reader);
}
@Override
public Item processItemData(final ValueLine valueLine) throws ImpExException
{
Item item = null;
final ValueEntry codeEntry = valueLine.getValueEntry(2);
final String mediaCode = codeEntry.getCellValue();
if (StringUtils.isNotEmpty(mediaCode))
{
item = super.processItemData(valueLine);
}
else
{
valueLine.resolve(item, Collections.EMPTY_LIST);
}
return item;
}
}