AjaxFormValidatingBehavior Performance и загубен фокус върху Firefox

Моят проект използва AjaxFormValidatingBehavior на Wicket за автоматично запазване на съдържанието на формуляра в сесия във вид на формуляр с няколко раздела и дървовидно меню (няма бутон за запазване на отделни раздели, въпреки че има „Запазване“ бутон, който всъщност изпраща формуляра, изпълнява проверките и записва съдържанието в базата данни). Изправен съм пред няколко проблема:

  1. Тъй като поведението се добавя към събитието onChange на всички компоненти на формуляр, има пътуване на сървъра всеки път, когато потребителят премине от едно поле към друго. Знам, че може да се посочи продължителност на газта, за да се предотврати това, но не е възможно да се зададе в моя случай, тъй като моите форми са с различна дължина/сложност, много динамично генерирани компоненти (включително дървовидното меню). Но има ли по-елегантно решение за автоматично запазване на съдържанието на формуляра (което няма бутон за изпращане) вместо това досадно решение.

  2. Друг проблем, с който се сблъсквам, е следното събитие onChange, във Firefox компонентът губи фокуса си след края на „пътуването на сървъра“. Докато на IE7 работи добре.


person Dchucks    schedule 14.05.2012    source източник


Отговори (1)


За първия въпрос мисля, че трябва да добавите конвейерно съоръжение, на вашите компоненти onchange извикване на вашата javascript функция, която извиква вашето уеб приложение. Можете да включите функция, подобна на тази, предоставена с продължителността на дросела, но за цялата страница (забавете всяко повикване и задействайте последното само ако е по-старо от x милисекунди например).

За втория мисля, че трябва да използвате AjaxRequestTarget#focusComponent в поведението си или да управлявате това нещо във вашата "обвивка", както е описано в първия отговор.

person Cedric Gatay    schedule 15.05.2012
comment
Обикновено не трябва да губите фокус, освен ако не опреснявате компонента, който потребителят току-що е фокусирал. Наистина не съм сигурен защо това би работило в IE7 - person Thorsten Wendelmuth; 15.05.2012