Основная проблема заключается в том, что Icefaces захватывает кнопку отправки и помещает в нее ajax.Я думаю, что это просто плохое поведение: я понимаю, что что-то подобное может произойти во льду: commandButton или даже под ice: form, но это случается и с h: commandButton для h: form.Это можно отключить, согласно http://wiki.icefaces.org/display/ICE/Configuration, установив для параметра контекста autorender значение false в web.xml.Но тогда вам нужно явно включить это поведение в каждой форме icefaces (в противном случае вы получите ошибку).
В любом случае, как указано здесь: http://wiki.icefaces.org/display/ICE/Handling+Exceptions, размещение этого скрипта на странице в основном решает проблему:
//Assign your error handling function to a variable
var iceErrorCallback = function iceHandleError(statusCode, responseTxt, responseDOM) {
//Handle all errors by simply redirecting to an error page
window.location.href = "./generalError.xhtml";
}
//Safely check if ICEfaces is available
if (ice) {
//Turn off the popups as we plan to handle this ourselves
ice.configuration.disableDefaultIndicators = true;
//Register your error handler as a callback
ice.onServerError(iceErrorCallback);
}
Обновление: я должен был исправить несколько javascript Icefaces для его работы, см. http://jira.icefaces.org/browse/ICE-6546.Я знаю, что нормальное поведение Icefaces отображает всплывающее окно с ошибкой, которая не произошла.