Matcher
Hamcrest (および一部の Lambdaj) を使用して、指定されたプロパティ モデル値のいずれかが指定されたマッチャーと一致するかどうかを確認し、一致する場合はコンポーネントを非表示にする、Wicket での可視性動作を構築していました。
public class HiddenWhenValueMatchesBehavior<T> extends Behavior {
private static final long serialVersionUID = 1L;
Collection<IModel<T>> models;
Matcher<T> matcher;
public HiddenWhenValueMatchesBehavior(Matcher<T> matcher, IModel<T>... models) {
this.models = Arrays.<IModel<T>> asList(models);
this.matcher = matcher;
}
@Override
public void onConfigure(Component component) {
super.onConfigure(component);
component.setVisible(!hasItem(matcher).matches(extract(models, on(IModel.class).getObject())));
}
}
Hamcrest Matcher はシリアライズ可能ではなく、Issue Tracker によると、シリアライズ可能にするつもりはないことに気付きました。
上記は単なる例です。s やその他の Wicketに渡すMatchers
ためのいくつかの使用法を見ることができます。Behavior
これを回避する方法はありますか?