如何覆盖inherit gwt模块的延迟绑定配置

时间:2014-08-27 07:55:43

标签: gwt inheritance

是否可以覆盖继承模块的延迟绑定配置?

这是一个例子:

在模块中,我想使用,延迟绑定声明如下moduleA.gwt.xml

<replace-with class="A1Impl">
    <when-type-is class="A"/>
</replace-with>

<replace-with class="A2Impl">
    <when-type-is class="A"/>
    <when-property-is name="p" value="1"/>
</replace-with>

声明说:如果属性A1Impl的值为A2Impl,则使用p类作为默认类和1类。

现在,在我的应用中,我想要使用该模块,并希望P1(因为这会控制上面显示的内容,还有很多其他延迟绑定配置){{1} }:

mymodule.gwt.xml

但另外我想覆盖继承模块的延迟绑定配置以使用我自己的<inherits name='moduleA'/> <set-property name="p" value="1" /> 实现。我在我的模块中尝试了类似的东西,但它不起作用:

A

它应该是这样的:如果属性<replace-with class="B1Impl"> <when-type-is class="A"/> <when-property-is name="p" value="1"/> </replace-with> 具有值A2Impl但是使用我自己的实现p,请不要使用1(在继承模块中声明)

这可能吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

简而言之,是的,您可以重新定义已经设置的任何重新绑定规则。只需inherit您要更改的模块,然后在重新绑定规则之后进行更改。

<inherits name="package.to.ModuleA" />
<set-property name="p" value="1" />

使用上面的代码,p始终为1,因此设置有关p的具体规则有点愚蠢。除非p能够不是1,否则你甚至不需要when-property-is规则。

只要在 replace-with语句后列出,您的inherits看起来就是正确。因此,我始终鼓励开发人员首先列出所有inherits规则,然后继续执行任何replace-withgenerate-withset-property规则。

有关详细信息,您需要发布一些更具体的内容。