Hybris:若代码为空,是否可以忽略impex行?

Hybris:若代码为空,是否可以忽略impex行?,hybris,impex,Hybris,Impex,我希望以这样一种方式导入媒体:如果代码为null,那么hybris应该忽略它,否则它将传递它。这是我的弹劾书 INSERT_UPDATE Media;mediaFormat(qualifier);code[unique=true][allownull=true];youtubeURL;mime[default='video/mp4'];$catalogVersion;folder(qualifier)[default=images] 我有一个CSV文件,其中包含多组产品数据。有些产品有媒体,有

我希望以这样一种方式导入媒体:如果代码为null,那么hybris应该忽略它,否则它将传递它。这是我的弹劾书

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实现,但不确定如何实现。我不想为此编写自定义翻译。请给我一些可能的解决办法

不,这是不可能的。随机尝试旧模式将不会有帮助


您需要重新考虑从CSV文件到Impex的转换。

经过深思熟虑,除了创建自己的处理器,我找不到任何合适的解决方案。这是解决办法

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;
}
}
弹劾案应该是这样的

 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]
这不会挽救错误。但当我进入控制台时,它不会抛出空指针异常(一个大的非常讨厌这个)。所以,如果
code=null
系统将转储该行并继续下一步

更新: 我的问题很快就解决了。如果code=null(根据我的要求),这里有一个正确的解决方案来转储完整的行

一句话让一切都像一个魅力

valueLine.resolve(项目、集合、空列表)

完整代码
我们不能用比恩希尔做点什么吗?
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;
    }
}