java - Hybris 中的自定义产品 URL 解析器

标签 java spring spring-mvc sap-commerce-cloud

我正在尝试在 Hybris 中编写 URL 解析器,但遇到了一些错误;

方法getBaseProduct(ProductModel)类型 TrialProductModelUrlResolver 未定义

方法getCategoryPath(CategoryModel)类型 DefaultCategoryModelUrlResolver不适用于参数 (ProductModel)

ProductService 类型中的方法 getProductForCode(String) 不适用于参数 (ProductModel)

public class TrailerProductModelUrlResolver extends DefaultCategoryModelUrlResolver {

private TrailerURLNormalizationStrategy trailerURLNormalizationStrategy;

@Autowired
private ProductService productService;

@Override
protected String resolveInternal(final ProductModel source) {
    final ProductModel baseProduct = getBaseProduct(source);
    final BaseSiteModel currentBaseSite = getBaseSiteService().getCurrentBaseSite();
    String url = getPattern();

    if ((currentBaseSite != null) && (url.contains("{baseSite-uid}"))) {
        url = url.replace("{baseSite-uid}", currentBaseSite.getUid());
    }

    if (url.contains("{category-path}")) {
        url = url.replace("{category-path}", trailerURLNormalizationStrategy.normalizeString(buildPathString(getCategoryPath(source))));
    }

    if (url.contains("{product-name}")) {
        String productName = source.getName(TrailerCoreConstants.LOCALE_TR);

        if (StringUtils.isEmpty(productName)) {
            productName = baseProduct.getName(TrailerCoreConstants.LOCALE_TR);
        }

        CategoryModel categoryModel = productService.getProductForCode(baseProduct);
        if (categoryModel != null) {
            if (categoryModel.getName() != null) {
                if (!categoryModel.getName(TrailerCoreConstants.LOCALE_TR).isEmpty()) {
                    productName = categoryModel.getName(TrailerCoreConstants.LOCALE_TR) + " " + productName;
                }
            }
        }
        url = url.replace("{product-name}", trailerURLNormalizationStrategy.normalizeString(productName));
    }

    if (url.contains("{product-code}")) {
        url = url.replace("{product-code}", trailerURLNormalizationStrategy.normalizeString(source.getCode()));
    }

    return url;
}

@Override
protected String buildPathString(final List<CategoryModel> path) {
    if ((path == null) || (path.isEmpty())) {
        return "c";
    }

    final StringBuilder result = new StringBuilder();

    for (int i = 0; i < path.size(); ++i) {
        if (i != 0) {
            result.append('/');
        }
        result.append(path.get(i).getName());
    }

    return result.toString();
}

public TrailerURLNormalizationStrategy getTrailerURLNormalizationStrategy() {
    return trailerURLNormalizationStrategy;
}

public void setTrailerURLNormalizationStrategy(TrailerURLNormalizationStrategy trailerURLNormalizationStrategy) {
    this.trailerURLNormalizationStrategy = trailerURLNormalizationStrategy;
}
}

任何帮助

问候

最佳答案

只需将 DefaultCategoryModelUrlResolver 更改为 DefaultProductModelUrlResolver

对于 Product UrlResolver,扩展 DefaultProductModelUrlResolver

public class TrailerProductModelUrlResolver extends DefaultProductModelUrlResolver
{

    private static final Logger LOG = Logger.getLogger(TrailerProductModelUrlResolver.class);
    @Override
    protected String resolveInternal(final ProductModel source)
    {
        final ProductModel baseProduct = getBaseProduct(source);
        ...
    }
}
<小时/>

对于类别 UrlResolver,扩展 DefaultCategoryModelUrlResolver

public class TrailerCategoryModelUrlResolver extends DefaultCategoryModelUrlResolver
{
    @Override
    protected String resolveInternal(CategoryModel source)
    {

    }
}

关于java - Hybris 中的自定义产品 URL 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852088/

相关文章:

java - 在 AlertDialog 关闭时刷新 RecyclerView

java - 为什么 CF UAA check_token 端点需要 clientId/clientSecret?

java - 使用非 Spring Boot 应用程序进行 Spring Boot 测试

java - 一个Spring应用程序可以有多少个BeanFactory?

java - 在构建 JTree 时,它​​会显示每个节点的路径,有什么方法可以只显示文件/文件夹名称?

java - 尝试对要显示在表行中的数组进行排序

java - SnappyData 作为操作数据库。推荐吗?

spring - 不满意的依赖异常 : Error creating bean with name 'homeController' : Unsatisfied dependency expressed through field 'userDAO'

java - Spring MVC Web 应用程序 : No default constructor found

java - 在 BST 中查找节点位置并将其递归地添加到树中