Помимо написания очень странного аспекта я не верю, что есть способ. Это цена, которую вы платите за использование метода static
, который вы не можете изменить.
Я бы посмотрел на массовое изменение, используя ваши любимые инструменты IDE или командной строки, например. sed
. Если вы хотите изменить все вхождения {0}
в {0,number,#}
, этого должно быть достаточно, чтобы
sed -i -e 's/{0}/{0,number,#}/g' MyClass.java
Может ли сервер записывать текст на веб-страницу после ее загрузки? Да, это определенно так, но в наши дни я подозреваю, что это делается редко. Я начал веб-разработку в 1990-х годах, и тогда это было довольно распространенным методом. Мы использовали его для написания сообщений чата в браузерах без Javascript. В наши дни Javascript является вездесущим и мощным, поэтому использование клиентского Javascript для обновления страницы будет лучшим вариантом в большинстве случаев.
Тем не менее, технологии, которые мы использовали для написания серверных обновлений, должны работать. Я подозреваю, что причина того, что вы не видите обновления в вашем браузере, заключается в том, что он не знает, что должен начать показывать страницу до того, как все загрузится. Использование chunked Transfer Encoding , технологии 1990-х, все еще поддерживаемой современными браузерами, должно решить эту проблему. Это позволяет серверу указывать, когда «чанка» данных завершена, и браузеры обычно обрабатывают каждый чанк немедленно, а не ожидают прибытия всех чанков.
Самый простой способ использовать chunked Transfer Encoding - это использовать HTTP-библиотеку, подобную Apache HttpComponents , а затем обернуть ваш выходной поток в соответствующий класс:
final var socket = new java.net.ServerSocket(1234);
for (;;)
{
try (final var client = socket.accept())
{
var outputStream = new ChunkedOutputStream(client.getOutputStream());
outputStream.write("HTTP/1.1 200 OK\r\n\r\n".concat(java.time.Instant.now().toString()).getBytes());
outputStream.flush();
Thread.sleep(1000L);
outputStream.write("And another paragraph.".getBytes());
}
}