Вот мой код фильтра, который мне нужно исправить. Идея фильтра заключается в том, что если найдена некоторая строка запроса. Обработайте его, не нужно возвращать или обрабатывать цепочку или что-то в этом роде. Однако, когда строка запроса не найдена, исходный запрос должен обслуживаться, например. get/put/update/delete.Правильный способ делать фильтрацию с помощью Restlet
@Override
protected int doHandle(Request request, Response response) {
HttpServletRequest servletRequest = ServletUtils.getRequest(request);
HttpServletResponse servletResponse = ServletUtils.getResponse(response);
String query = servletRequest.getQueryString();
LOG.info("Query=" + query);
if(query != null && query.contains(ESCAPED_FRAGMENT_FORMAT1)){
// TODO: return a HTML String, no need to go down the chain.
return STOP;
} else {
// TODO: need to execute the original request
return SKIP;
}
return CONTINUE;
}
Проблема здесь в том, что я не совсем уверен, куда возвращать СТОП, SKIP и ПРОДОЛЖИТЬ в этом коде для того чтобы достигнуть того, что мне нужно.
Как я могу добиться того, что запрос будет действовать нормально, как если бы фильтр не был основан на вышеприведенном выражении if-else? CONTINUE должно быть возвратом в выражении if? – xybrek
да, думаю. «continue» сообщает фильтру, что запрос обрабатывается как обычно. –
Я также замечаю, что вы можете получить доступ к запросу, вызвав request.getResourceRef(). GetQuery() вместо поиска HttpServletRequest. –