java - How to know when the request is forwarded in a RequestWrapper object -
i using subclass of httpservletrequestwrapper translations on request parameters, , cache translated values first time requested. example, first time getquerystring() called, call super.getquerystring() , calculate result want , keep in field, , return it. next times, use cached result.
this method works charm unless there's "forwarding". when request forwarded, tomcat replaces original request, cached query string not changed, , forwarded page gets original query string, not 1 forwarded to.
overriding setrequest() method clear cache doesn't either, if request wrapped twice, calls setrequest on inner wrapper (which not mine), , have no way know when happens.
i'm looking way notified when there change in wrapped request hierarchy, can clear cache, when there "forward".
the original request uri available request attribute key requestdispatcher.forward_request_uri.
string originalrequesturi = request.getattribute(requestdispatcher.forward_request_uri); if (originalrequesturi != null) { // forwarded. query string follows. string originalquerystring = request.getattribute(requestdispatcher.forward_query_string); } note: in older servlet api versions need hardcode key instead.
string originalrequesturi = request.getattribute("javax.servlet.forward.request_uri"); // ...
Comments
Post a Comment