Wicket 导叶复合特性

Wicket 导叶复合特性,wicket,Wicket,我已经创建了一个复合行为——基本上是两个AjaxFormComponentUpdateingBehavior(onBlur和onKeyUp)。可从以下网址获得: 在呈现添加了此行为的组件时,我得到一个异常,指出“[the]Behavior_uu]未注册到此组件”。当从行为的onComponentTag()中调用blur.onComponentTag()方法时,会发生异常 有人知道这是为什么吗?我应该提到我正在使用Wicket 1.4.21 谢谢 异常源于RequestCycle#urlFor()

我已经创建了一个复合行为——基本上是两个AjaxFormComponentUpdateingBehavior(onBlur和onKeyUp)。可从以下网址获得:

在呈现添加了此行为的组件时,我得到一个异常,指出“[the]Behavior_uu]未注册到此组件”。当从行为的
onComponentTag()
中调用
blur.onComponentTag()
方法时,会发生异常

有人知道这是为什么吗?我应该提到我正在使用Wicket 1.4.21

谢谢


异常源于RequestCycle#urlFor():


正如Michael已经评论的那样,您的包装行为必须添加到组件中,仅仅调用#bind()是不够的。

在您的复合行为的
#bind()
方法中,您为您的
blur
keyUp
调用另一个
#bind()
方法,但是,正如@Sven已经提到的那样,调用此方法不足以实现此目的,因为它为
行为
创建指向
组件
的链接,但
组件
仍然不了解这些行为

当您调用
component.add(behaviors)
时,会对每个行为的
#bind()
方法进行内部调用。这就是你真正需要的


因此,只需替换:

blur.bind(component);
keyUp.bind(component);
通过以下方式:

component.add (blur, keyUp);

尝试将
blur.bind(component)
keyUp.bind(component)
替换为
component.add(blur,keyUp)
。太棒了!成功了。谢谢@MichaelZhavzharov。你想把你的评论移到一个答案上,这样我就可以投票并把问题标记为已回答?我真的很想给你们两个答案,但我先看到了迈克尔的评论。谢谢你们两位。
component.add (blur, keyUp);