Search code examples
javajsf-2jsf-1.2

How to add request parameter in jsf2?


In my app, before upgrading to jsf 2, when doing a custom redirect I used to manually put a request parameter with a specific value in external context like this:

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
                .put(CmwNavigationControllerBean.PARAM_DISPLAY_TARGET_POPUP, "true");

Now this line, throws an exception because it seems that this map is no longer allowed to be modified:

at java.util.Collections$UnmodifiableMap.put(Unknown Source) [rt.jar:1.7.0]

Isn't really no other way to bypass this exception? I'm doing refactoring because of upgrade and I try to keep the changes at minimal level.


Solution

  • Rather than getRequestParameterMap() (which is read-only) you should invoke getRequestMap() on the ExternalContext.

    For example:

    FacesContext.getCurrentInstance()
                .getExternalContext()
                .getRequestMap()
                .put(CmwNavigationControllerBean.PARAM_DISPLAY_TARGET_POPUP, "true");