Как установить параметр в HttpServletRequest?

используйте библиотеку json

import json
json.dumps(list)

, кстати, вы можете рассмотреть возможность изменения списка переменных на другое имя, list - встроенная функция для создания списка, вы можете получить некоторые неожиданные поведения или ошибки код, если вы не измените имя переменной.

28
задан Alceu Costa 21 May 2009 в 11:47
поделиться

3 ответа

Вы не можете, не используя стандартный API. HttpServletRequest представляет запрос, полученный сервером, поэтому добавление новых параметров не является допустимым вариантом (с точки зрения API).

В принципе, вы можете реализовать подкласс HttpServletRequestWrapper , который обертывает исходный запрос, перехватывает методы getParameter () и передает обернутый запрос при пересылке.

Если вы идете по этому маршруту, вам следует использовать фильтр , чтобы заменить ваш HttpServletRequest на HttpServletRequestWrapper :

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    if (servletRequest instanceof HttpServletRequest) {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        // Check wether the current request needs to be able to support the body to be read multiple times
        if (MULTI_READ_HTTP_METHODS.contains(request.getMethod())) {
            // Override current HttpServletRequest with custom implementation
            filterChain.doFilter(new HttpServletRequestWrapper(request), servletResponse);
            return;
        }
    }
    filterChain.doFilter(servletRequest, servletResponse);
}
29
ответ дан 28 November 2019 в 02:57
поделиться

Если вы действительно хотите это сделать, создайте HttpServletRequestWrapper.

public class AddableHttpRequest extends HttpServletRequestWrapper {

   private HashMap params = new HashMap();

   public AddableingHttpRequest(HttpServletRequest request) {
           super(request);
   }

   public String getParameter(String name) {
           // if we added one, return that one
           if ( params.get( name ) != null ) {
                 return params.get( name );
           }
           // otherwise return what's in the original request
           HttpServletRequest req = (HttpServletRequest) super.getRequest();
           return validate( name, req.getParameter( name ) );
   }

   public void addParameter( String name, String value ) {
           params.put( name, value );
   }

}
20
ответ дан 28 November 2019 в 02:57
поделиться

Попробуйте следующее: Для этого вам не нужно устанавливать параметр, а использовать атрибут

void setAttribute(String name, Object o);

, а затем

Object getAttribute(String name);
15
ответ дан 28 November 2019 в 02:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: