У меня есть большая "форма заказа" XPage, которая отображает 99 строк с 3 текстовыми полями ввода в каждой строке. Чтобы зафиксировать изменения, я поместил вызов функции SSJS в событие onchange каждого поля ввода. Вызов просто отправляет идентификатор продукта, тип изменения (какой столбец) и количество. Затем функция SSJS сохраняет эти изменения в переменной sessionScope (java.util.HashMap). Обновление не связано с изменением.
Изменения обрабатываются в массовом порядке, когда пользователь нажимает кнопку «Отправить». Это еще одна функция SSJS, которая просто записывает все изменения во внутреннюю базу данных Domino.
Вроде бы все работает нормально и работает уже пару лет. Тем не менее, похоже, что мои пользователи стали слишком эффективно работать с приложением и печатают быстрее, чем оно успевает.
Мой код отладки записывает каждое изменение в консоль сервера, и я вижу, где некоторые изменения просто игнорируются, если пользователь вносит изменения в быстрой последовательности (они просто перемещаются между полями ввода). Как будто сервер слишком занят обработкой предыдущего изменения и пропускает одно, чтобы перейти к другому. Иногда пропускаются целые блоки изменений, а затем приложение возвращается, когда может.
Использую ли я неправильную технику для фиксации изменений? Есть ли что-то, что я могу сделать, чтобы приложение инициировало событие onchange каждый раз?
Я тестировал это с помощью IE8/9 и FF24. Я просмотрел другие подобные сообщения, в которых вместо этого предлагается использовать событие onkeyup. Я не думаю, что это сработает в моем случае, так как пользователи могут заказывать двузначные количества.
Любые / все предложения будут с благодарностью оценены!