Grails 2.4.4 регистрация объекта запроса - PullRequest
0 голосов
/ 27 июня 2018

Мне нужно зарегистрировать входящий запрос 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 в контроллер?

1 Ответ

0 голосов
/ 28 июня 2018

Наконец-то нашли решение:

используйте grailsplugin: grails-httplogger в версии 1.1 делает правильную обертку, поэтому ведение журнала и использование теперь работает. https://github.com/prumps/grails-httplogger

...