J'essaie d'ajouter un attribut "Collection" à afficher sur le front office de hybris B2C Accelerator.Erreur de concordance liée
Jusqu'à présent, j'ont déclaré les haricots suivants dans mon dossier projectName-Spring.xml:
<alias name="defaultProductSpecialPopulator" alias="productSpecialPopulator" />
<bean id="defaultProductSpecialPopulator" class="de.hybris.electronics.facades.populators.ProductSpecialPopulator" scope="prototype">
<property name="modelService" ref="modelService" />
</bean>
<alias name="defaultProductConfiguredPopulator" alias="productConfiguredPopulator" />
<bean id="defaultProductConfiguredPopulator" class="de.hybris.platform.commercefacades.converter.impl.DefaultConfigurablePopulator">
<property name="populators">
<map key-type="de.hybris.platform.commercefacades.product.ProductOption">
<entry key="SPECIAL" value-ref="productSpecialPopulator" />
</map>
</property>
</bean>
Dans mon fichier ProjectName-core.xml, j'ai ajouté la collection d'attributs:
<typegroup name="Product">
<itemtype code="Product" autocreate="false" generate="false">
<description>Pending description...</description>
<attributes>
<attribute qualifier="collection" type="java.lang.String">
<description>Pending description...</description>
<persistence type="property"></persistence>
</attribute>
</attributes>
</itemtype>
</typegroup>
Mais ensuite, quand j'ai mis en place le populateur, j'ai l'erreur suivante:
Bound mismatch: The type TARGET is not a valid substitute for the bounded parameter of the type AbstractProductPopulator
Voici le populateur en question:
package de.hybris.electronics.facades.populators;
import de.hybris.electronics.facades.product.data.ProductData;
import de.hybris.platform.commercefacades.product.converters.populator.AbstractProductPopulator;
import de.hybris.platform.core.model.product.ProductModel;
import de.hybris.platform.servicelayer.dto.converter.ConversionException;
public class ProductSpecialPopulator<SOURCE extends ProductModel, TARGET extends ProductData>
extends AbstractProductPopulator<SOURCE, TARGET>
{
@Override
public void populate(final ProductModel source, final ProductData target) throws ConversionException
{
target.setCollection(source.getCollection());
}
}
L'erreur lui-même est lancée par TARGET dans cette ligne:
extends AbstractProductPopulator<SOURCE, TARGET>
Et voici la définition du AbstractProductPopulator:
public abstract class AbstractProductPopulator<SOURCE extends ProductModel, TARGET extends ProductData>
implements Populator<SOURCE, TARGET>
Ce 'AbstractProductPopulator' n'est pas quelque chose de" public "pouvez-vous poster la définition de classe pour cela (c'est-à-dire la ligne 'abstract abstract class AbstractProductPopulator ...') –
Bien sûr, je vais éditer le post pour inclure la définition du populateur abstrait. –
Voir les espaces de noms de ProductData et celui de AbstractProductPopulator. Ils sont probablement différents. Je vous recommande de ne prolonger que ProductPopulator si vous êtes avec Hybris 6+ –