request.getParameter необходимо редактировать - PullRequest
0 голосов
/ 31 января 2019

В моих методах выполнения Struts я получаю одно значение из пользовательского интерфейса через request.getParameter ().Внутри execute () я хочу отредактировать requestParameter.

request.getParameter ("STATE"), есть ли возможность редактировать STATE со стороны Java.

1 Ответ

0 голосов
/ 01 февраля 2019

Вы должны использовать HttpServletRequestWrapper для этой цели.Вы передаете исходный запрос оболочке из фильтра или сервлета и переопределяете методы запроса, которые хотите.Остальной части приложения вы передаете измененный объект-оболочку, а не исходный запрос.

public class WrapperRequest extends HttpServletRequestWrapper {


        public WrapperRequest (ServletRequest request) {
            super((HttpServletRequest)request);
        }


        public String getParameter(String paramName) {
            String value = super.getParameter(paramName);
            if ("yourParamName".equals(paramName)) {
                value = "yourValue";
            }
            return value;
        }

        public String[] getParameterValues(String paramName) {
        //override here too
        }
    }

Затем в вашем фильтре или сервлете

WrapperRequest wrapperReq= new WrapperRequest(request);
chain.doFilter(wrapperReq,respone); //for filters, all resources in the request will see the new param value
requestDispatcher.forward(wrapperReq, response);//servlets, the forwarded resource will see the new param value
...