2015-08-17 7 views
0

После прочтения нижеследующего нити:Настройка заголовка пользовательских Content-Range в Restlet для использования в Dojo пагинации терпит неудачу

Setting a custom Content-Range Header using Restlet

Я попытался установить пользовательские UnitName в диапазоне для объекта. Это не решает проблему.

final Range range = new Range(); 
    range.setUnitName("items"); 
    range.setIndex(0); 
    range.setSize(20); 

[...]

getResponseEntity().setRange(range); 
getResponseEntity().setSize(100); 

Ответ теперь содержит следующие заголовки:

Content-Range:"items 0-19/100" 

Но Restlet также читает range.size (20 в данном случае) и путы это как Content-Length автоматически. Какие результаты в:..

Content-Length:"20" 

Это приводит к тому, клиент (например, браузер, чтобы остановить чтение после 20Bytes (Это также вызывает исключение нуль-указатель на сервере, так как OutputStream закрывается неожиданно)

Официальная документация: http://restlet.com/technical-resources/restlet-framework/guide/2.3/core/http-headers-mapping

говорит, что Content-Length доступен как message.entity.size, но для достижения нужной строки в Content-Range это должно быть установлено в 100. Это похоже на ошибку, поскольку диапазон .size используется для вычисления длины содержимого, а не размера объекта.

Я не могу установить длину контента вручную, так как это также стандартный заголовок, и все ручные изменения стандартных заголовков включены.

«Исправление», предложенное в упомянутой теме, изменяет только имя единицы измерения - не реальное устройство - указанного диапазона. Он по-прежнему интерпретируется как байты, которые непригодны для использования как таковые.

Использование значений в диапазоне дважды - для контента, а также для контента, похоже, проблема.

Есть ли новый способ вручную переопределить заголовки или сделать их совместимыми с dojo?

Изменения в ручном режиме блокируются в HeaderUtils, вызываемом ServerAdapter, в результате чего: «ПРЕДУПРЕЖДЕНИЕ: добавление стандартного заголовка [...] не разрешено ...».

+0

Привет, спасибо, что сообщили об этом. Я добавил проблему для этого вопроса: https://github.com/restlet/restlet-framework-java/issues/1132. Я посмотрю позже. –

+0

Привет, исправление было разработано, ожидая подтверждения. –

+0

Эй! Отлично, похоже, это устранит проблему. С нетерпением жду этого. – Max

ответ

0

поддержка будет добавлена ​​в будущем 2.3.8 выпуск Restlet Framework.