2013-03-29 2 views
1

Я застрял во время миграции с Wicket 1.5 до 6.6.AjaxLink updateAjaxAttributes - AjaxCallListener getPrecondition

Ранее AjaxLink разрешено переопределить getAjaxCallDecorator() метод и обернуть сценарий с preDecorateScript (CharSequence сценария).

В настоящее время рекомендуемый способ использует AjaxCallListener с getPrecondition (компонент) Компонент метода. Но как я могу обернуть исходный скрипт, используя параметр Component component?

+0

Я думаю, что я понял. Вместо того, чтобы обернуть скрипт в Wicket 6, можно разделить на две фазы: перед вызовом ajax (например, с помощью * getBeforeHandler() *) и после вызова ajax (* getCompleteHandler() *) – TOUDIdel

ответ

1

Не знаете, правильно ли я вас понимаю. Мы делаем это следующим образом:

public class MyAjaxCallListener implements IAjaxCallListener{ 

    @Override 
    public CharSequence getBeforeHandler(Component component) { 
     return null; 
    } 

    @Override 
    public CharSequence getPrecondition(Component component) { 
     return YOUR_SCRIPT; 
    } 

    // ...  not needed overrides can return null 

} 

Затем добавить его через Behavior к вашему AjaxLink.

ajaxLink.add(new AjaxEventBehavior("onclick") { 
    @Override 
    protected void onSubmit(AjaxRequestTarget target) { 
    //do stuff 
    } 

    @Override 
    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { 
     super.updateAjaxAttributes(attributes); 
     attributes.getAjaxCallListeners().add(new MyAjaxCallListener()); 
    } 
}); 
+0

Кажется, это хорошо. Проблема в том, что ранее * CharSequence script * был параметром метода, и я смог его обернуть (например, добавить или заменить что-то в скрипте). Сценарий отличается от контекста. Теперь параметр метода * Компонентный компонент *, и я не могу добавить или заменить somting, я должен вернуть полный скрипт. – TOUDIdel

+0

Ahh ok Я думаю, я понимаю - вы хотите изменить JS, созданный калитки. Я не делал этого, поэтому мой ответ лишь частично отвечал вашим потребностям. –

 Смежные вопросы

  • Нет связанных вопросов^_^