I'm using JSF with facelets and I need to get the request and session parameters inside the JSF page. In JSP pages I got this parameter like that: "${requestScope.paramName}"
or "${sessionScope.paramName}"
. But now after using JSF there are only beans and you can't get any value except bean attributes.
NOTE: The session attributes what I need is auto filled using acegi security so I can't get any access to them.
So what to do now?
You can also use a bean (request scoped is suggested) and directly access the context by way of the FacesContext.
You can get the HttpServletRequest and HttpServletResposne objects by using the following code:
After this, you can access individual parameters via
getParameter(paramName)
or access the full map viagetParameterMap()
req
objectThe reason I suggest a request scoped bean is that you can use these during initialization (worst case scenario being the constructor. Most frameworks give you some place to do code at bean initialization time) and they will be done as your request comes in.
It is, however, a bit of a hack. ;) You may want to look into seeing if there is a JSF Acegi module that will allow you to get access to the variables you need.
You can get a request parameter id using the expression:
Section 5.3.1.2 of the JSF 1.0 specification defines the objects that must be resolved by the variable resolver.
In the bean you can use session.getAttribute("attributeName");
You can either use
<h:outputText value="#{param['id']}" />
or<h:outputText value="#{request.getParameter('id')}" />
However if you want to pass the parameters to your backing beans, using
f:viewParam
is probably what you want. "A view parameter is a mapping between a query string parameter and a model value."<f:viewParam name="id" value="#{blog.entryId}"/>
This will set the id param of the GET parameter to the blog bean's
entryId
field. See http://java.dzone.com/articles/bookmarkability-jsf-2 for the details.You can like this:
Because
requestScope
orsessionScope
is a Map object.Are you sure you can't get access to request / session scope variables from a JSF page?
This is what I'm doing in our login page, using Spring Security: