我在 Wicket 上构建了一个可见性行为,它使用 Hamcrest Matcher
(和一些 Lambdaj)来查看是否有任何给定的属性模型值与给定的匹配器匹配,如果是,那么它将隐藏组件。
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 Matchers 是不可序列化的,并且根据他们的问题跟踪器,他们无意序列化。
上面只是一个例子,我可以看到传递Matchers
给Behavior
s 和其他 Wicket 东西的几种用途。
有什么办法吗?