web-app에서 wicket 버전을 1.5.9에서 6.14.0으로 업그레이드해야합니다. (동작) 데코레이터를 청취자에게 매우 문제가있는 것으로 업그레이드하는 것을 발견했습니다. 1.5.x에서 6.x로 업그레이드 할 때 리스너와 Wicket Decorator
는o.a.w.ajax.IAjaxCallDecorator is replaced with o.a.w.ajax.attributes.IAjaxCallListener.
나는 거의 정확하게 필요한 부분을 업그레이드 POC를 만드는 데 성공했다. 요소 스크립트가 다음과 같이 장식 할 수 있습니다 1.5.9에서
(낮은 수준은 다른 변경 관련이 있지만, 이것에 종료)처럼 수행 6.14.0 같은에서
public class MyBehavior extends AjaxFormComponentUpdatingBehavior {
@Override
// (removed in upgrade to 6.14.0)
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new SmallDecorator();
}
private class SmallDecorator extends AjaxCallDecorator {
public SmallDecorator() {}
@Override
public CharSequence decorateScript(Component component, CharSequence script) {
return "alert('decorated onblur');" + script;
}
}
}
을 이 (지금까지의 내가 제대로 이해로)
public class OnBlurBehavior extends AjaxFormComponentUpdatingBehavior {
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.getAjaxCallListeners().add(new
GenericListenerImpl("alert('Listener onblur')"));
}
private class GenericListenerImpl extends AjaxCallListener {
private String decoratorScript = null;
public GenericListenerImpl(String decoratorScript) {
this.decoratorScript = decoratorScript;
}
@Override
public CharSequence getPrecondition(Component component) {
return this.decoratorScript;
}
}
}
이제이 기본으로 작동하지만이 1.5.9 버전에서 수행처럼 편집하거나 "스크립트"를 포장 할 때, 어떻게 수행 할 수 있습니다 6.14.0 버전 에서요?
이것은 내가 매우 (아주) 오랫동안 Wicket을 사용하지 않았고, 멍청한 놈이 특별히 최신 버전에 오는 것과 같이 매우 문제가있는 것으로 판명되었습니다. :)