在检票口行为中使用附加组件的最佳方式

Best way to use additional components in wicket behaviors

我已经创建了一个可以附加到表单组件的检票口行为的新子类。如果此类组件发生验证错误,则行为 shows/hides 特定的错误标签。我的代码看起来类似于:

public MyErrorBehavior(Component errorComponent) { 
  // show/hide errorComponent within onUpdate() or 
  // onError() based on getComponent().isValid()
} 

我的问题是:可以将组件传递给行为构造函数吗?

干杯, 安德烈亚斯

是的,允许保留对组件的引用的行为,请参见 EqualInputValidator 作为示例。

如果您从组件树中删除这些组件,请务必小心:您也应该删除该行为,否则您将拥有不再分离的组件的悬空引用。

不需要保留对组件的引用,因为 Wicket 将在回调方法中传递组件,例如

@Override 
public void onComponentTag(Component component, ComponentTag tag) 
{ 
  // cast component to FormComponent and make the check here
} 

这种方式不需要清理,您可以将相同行为实例添加到多个 (Form)Component。