Java 界错配误差
我正在尝试添加一个属性“Collection”以显示在hybris B2C Accelerator的前台 到目前为止,我已经在projectName-Spring.xml文件中声明了以下bean:Java 界错配误差,java,hybris,Java,Hybris,我正在尝试添加一个属性“Collection”以显示在hybris B2C Accelerator的前台 到目前为止,我已经在projectName-Spring.xml文件中声明了以下bean: <alias name="defaultProductSpecialPopulator" alias="productSpecialPopulator" /> <bean id="defaultProductSpecialPopulator" class="de.hybris
<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>
在ProjectName-core.xml文件中,我添加了属性集合:
<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>
挂起的描述。。。
挂起的描述。。。
但是,当我实现populator时,我得到了以下错误:
绑定不匹配:类型目标不是
类型的有界参数
抽象产品填充器
以下是问题中的人口:
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());
}
}
package de.hybris.electronics.facades.populators;
导入de.hybris.electronics.facades.product.data.ProductData;
导入de.hybris.platform.commercefacades.product.converters.populator.AbstractProductPopulator;
导入de.hybris.platform.core.model.product.ProductModel;
导入de.hybris.platform.servicelayer.dto.converter.ConversionException;
公共类ProductSpecialPopulator
扩展AbstractProductPopulator
{
@凌驾
public void populate(最终产品模型源、最终产品数据目标)引发ConversionException
{
target.setCollection(source.getCollection());
}
}
错误本身由此行中的目标引发:
extends AbstractProductPopulator<SOURCE, TARGET>
扩展AbstractProductPopulator
下面是AbstractProductPopulator的定义:
public abstract class AbstractProductPopulator<SOURCE extends ProductModel, TARGET extends ProductData>
implements Populator<SOURCE, TARGET>
公共抽象类AbstractProductPopulator
工具填充器
我认为问题的原因是ProductSpecialPopulator使用de.hybris.electronics.facades.product.data.ProductData
而AbstractProductPopulator最有可能使用de.hybris.platform.commercefacades.product.data.ProductData
因此,导致错误的是两个不同的类(包不同,但名称相同,即ProductData)
很可能存在一个extensionName-beans.xml文件,其中ProductData的bean定义如下class=“de.hybris.electronics.facades.product.data.ProductData”
而不是class=“de.hybris.platform.commercefacades.product.data.ProductData”,这应该是向现有的hybris产品数据添加属性的正确方法此
AbstractProductPopulator
不是“公共”的东西,您可以发布它的类定义吗(即,行公共抽象类AbstractProductPopulator…
)当然,我会编辑文章以包含抽象填充器的定义。请参阅ProductData的名称空间和AbstractProductPopulator中的名称空间。它们可能不同。如果您使用Hybris 6+的话,我建议您仅扩展ProductPopulator。您完全正确。在electronicsfacades-beans.xml文件中,集合an的类指向了错误的路径。我更改了它,错误在生成后消失了。非常感谢。