我需要记录传入的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
传递给控制器?
答案 0 :(得分:0)
最后找到了解决方法:
使用grailsplugin:1.1版中的grails-httplogger做正确的包装程序,因此现在可以记录和使用。 https://github.com/prumps/grails-httplogger