Как только тело запроса прочитано из запроса до достижения контроллера, вы не сможете его нигде использовать.Итак, вы можете прочитать тело из HttpServletRequest
в реализации Filter
и установить его в переменную ThreadLocal
.Тогда вы можете прочитать из этого ThreadLocal
.Ниже приведен пример кода.
Внутри Filter
класса реализации
try {
YourModel yourModel = // Read the request body
RequestContextHolder.setContext(yourModel);
}finally {
RequestContextHolder.clearContext();
}
и в любой момент времени в текущем запросе вы можете сделать, как показано ниже.
RequestContextHolder.getContext();
Вот класс RequestContextHolder
public class RequestContextHolder {
private static final ThreadLocal<YourModel> THREAD_LOCAL = new ThreadLocal<>();
public static void setContext(YourModel yourModel) {
THREAD_LOCAL.set(yourModel);
}
public static YourModel getContext() {
return THREAD_LOCAL.get();
}
public static void clearContext() {
THREAD_LOCAL.remove();
}
}