Grails 2.4.4请求对象记录

时间:2018-06-27 09:29:26

标签: grails grails-2.0

我需要记录传入的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)
        }
    }
}

这将按预期记录传入的请求。

但是现在在我的控制器中,该请求为空,无法用于构建我的域对象:

 class InquiryHandlerController {
  def save(Inquiry inquiryInstance) {
   ... *** inquiryInstance is null here
  }
 }

我想问题是,该请求已在RequestWrapper中读取,因此不能在 magic requestToDomain转换中再次读取。

那么如何将新的RequestWrapper Object而不是原始的request传递给控制器​​?

1 个答案:

答案 0 :(得分:0)

最后找到了解决方法:

使用grailsplugin:1.1版中的grails-httplogger做正确的包装程序,因此现在可以记录和使用。 https://github.com/prumps/grails-httplogger