1

我想以这样的方式导入媒体,如果代码为空,那么 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 可以实现,但不知道该怎么做。我不想为此编写自定义翻译器。请给我一些可能的解决方案。

4

2 回答 2

1

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

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]

这不会挽救错误。但它不会在我进入控制台时抛出空指针异常(一个大人物真的很讨厌这个)。因此,如果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;
    }
}
于 2014-09-02T06:03:12.043 回答
0

不,这是不可能的。随机尝试传统模式无济于事。

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

于 2014-08-29T09:58:50.583 回答