stephenjbell

Modify query string values of current page (hashmap)- dotCMS

Aug 28th, 2013
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. ## Get the query string as a hashmap
  2. ## NOTE: Things will break if you use some special characters (""","&", etc. )
  3. #set($queryParams = $contents.getEmptyMap())
  4. #foreach($key in $request.getParameterNames())
  5. #set($value = $request.getParameter($!{key}))
  6. #set($key = $key.replaceAll("[^a-zA-Z0-9]",""))
  7. ## #set($queryParams.y = ${value})
  8. $render.eval("${esc.h}set(${esc.d}queryParams.${key} = ${esc.d}{value})")
  9. #end
  10.  
  11.  
  12. ## Convert query string hashmap back to a query string ($queryString)
  13. #macro(toQueryString $queryMap)
  14. #set($queryString = "")
  15. #foreach($item in $queryMap.entrySet())
  16. #if($velocityCount == 1)
  17. #set($joiner = "?")
  18. #else
  19. #set($joiner = "&")
  20. #end
  21. #set($value = $UtilMethods.encodeURL($item.value))
  22. #set($queryString = "${queryString}$!{joiner}${item.key}=${value}")
  23. #set($value = "")
  24. #set($joiner = "")
  25. #end
  26. #end
  27.  
  28. ## Example usage:
  29. ## Clone the existing query string data, make changes to it,
  30. ## then put it back in a query string for the current page
  31.  
  32. #set($queryParams2 = $queryParams.clone())
  33. #set($queryParams2.y = "2015")
  34. #toQueryString($queryParams2)
  35. <a href="${VTLSERVLET_URI}$!{queryString}">Link</a>
Advertisement
Add Comment
Please, Sign In to add comment