我正在尝试在 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/