miercuri, 17 iunie 2015

[OmniFaces utilities 2.0/2.2] Get the HTTP request query string as parameter values map


[OmniFaces utilities] The getRequestQueryStringMap() method returns the HTTP request query string as parameter values map. Note this method returns only the request URL (GET) parameters, as opposed to HttpServletRequest#getParameterMap(), which contains both the request URL (GET) parameters and and the request body (POST) parameters.

Method (starting with OmniFaces 2.2, this method become mutable):

Usage:

·         inside a servlet filter or even a plain vanilla servlet (basically, when FacesContext is not available):

import org.omnifaces.util.Servlets;
...
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // e.g. request: http://localhost:8080/MyApp/MyServlet?tech=JSF&lib=OmniFaces&lib=PrimeFaces&type=utility&type=components
  // map content: {tech=[JSF], lib=[OmniFaces, PrimeFaces], type=[utility, components]}
  Map<String, List<String>> paramMap = Servlets.getRequestQueryStringMap(request); 
 }
 ...
}

·         in JSF, when FacesContext is available use, Faces#getRequestQueryStringMap(), or more clumsy (not recommended):

import org.omnifaces.util.Servlets;
...
// or simply use, Faces#getRequest()
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext externalContext = context.getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();

// e.g. request: http://localhost:8080/MyApp/faces/index.xhtml?tech=JSF&lib=OmniFaces&lib=PrimeFaces&type=utility&type=components
// map content: {tech=[JSF], lib=[OmniFaces, PrimeFaces], type=[utility, components]}
// Note: in order to preserve the query parameters over a JSF POST you may need, <o:formincludeRequestParams="true"> 
Map<String, List<String>> paramMap = Servlets.getRequestQueryStringMap(request);

Niciun comentariu:

Trimiteți un comentariu