Мне нужно зарегистрировать входящий запрос REST (xml).
Поэтому я создаю
public class RequestWrapper extends HttpServletRequestWrapper {
private String _body;
public RequestWrapper(HttpServletRequest request) throws IOException {
super(request);
_body = "";
BufferedReader bufferedReader = request.getReader();
String line;
while ((line = bufferedReader.readLine()) != null){
_body += line;
}
}
Теперь я использую фильтр для выхода из входящего запроса:
class XmlogFilterFilters {
def filters = {
all(controller:'*', action:'*') {
before = {
RequestWrapper wrappedRequest = new RequestWrapper(request)
log.info(wrappedRequest.reader.text)
}
}
}
Это регистрирует входящий запрос как ожидалось.
Но теперь в моем контроллере запрос пуст и не может быть использован для сборки моего Domain-Object:
class InquiryHandlerController {
def save(Inquiry inquiryInstance) {
... *** inquiryInstance is null here
}
}
Полагаю, проблема в том, что этот запрос уже был прочитан в RequestWrapper
, и поэтому его невозможно прочитать снова в магическом преобразовании запроса в домен .
Так как я могу передать новый RequestWrapper Object
вместо исходного request
в контроллер?