Муравей zipfileset
делает задание
<jar id="files" jarfile="all.jar">
<zipfileset src="first.jar" includes="**/*.java **/*.class"/>
<zipfileset src="second.jar" includes="**/*.java **/*.class"/>
</jar>
При необходимости вы также сможете перенаправить на одну из предопределенных ошибок страницы, которые вы настроили с помощью window.location.href = "url-to-error-page";
Используйте диалог JQuery, примерно так:
function handleXhrError(xhr) {
ele = $("<div></div>").appendTo("body");
ele.html(xhr.responseText);
$(ele).dialog();
}
Я должен ответить на остальное, что вы спросил. Я бросаю и перехватываю определенные исключения там, где могу, и отправляю клиенту специальные сообщения. Иногда я поручаю клиенту запустить функцию, которая может перенаправить браузер или частично обновить часть страницы. Это просто зависит от обстоятельств. Улавливание 400/500 будет иметь дело с реальными ошибками, но вы также хотите один раз написать код JS, чтобы отфильтровать все ваши запросы AJAX для настраиваемых флагов ошибок, которые вы будете возвращать с сервера, посмотрите эту страницу для получения дополнительной информации: http : //www.bennadel.com/blog/1392-Handling-AJAX-Errors-With-jQuery.htm
Думаю, лучше написать короткое сообщение, чем полностью переписывать страницу. Таким образом, это не будет сильно мешать работе самой страницы. Google Reader и Gmail делают что-то подобное. Reader показывает сообщение и не отмечает ваши записи как прочитанные, но вы все равно можете прочитать все загруженные сообщения.
Похоже, вы хотите сохранить рабочую страницу / приложение после получения состояния ошибки, которое может привести к невозможности использования.
Я бы реализовал историю состояний на стороне клиента и вернулся к страницу до последнего пригодного для использования состояния, информируя пользователя о том, что произошло, с помощью заметного внутреннего элемента
. Теория, лежащая в основе этого, связана с транзакциями. Обычно поток выполнения следующий:
I have not done serious study into transaction management in javascript. Since you state that the server-side error makes the client side unusable, perhaps there is some way to implement portions of the transaction on the server-side. It is important that you not leave things half done there more so than on the client-side.
Have you thought about doing a "pre flight check" request to try to capture these issues before the client-side application attempts to do the real work?