I have a <odc:tabbedPanel/> component. Inside this I have a page in the <odc:bfPanel/> component. I want to access a value (of a inputtext or radiobutton) from the page in the <odc:bfPanel/> in my <odc:tabbedPanel/> managed bean class. Please guide me as to how do I go about this. Please note here that I do not want to use the session here. I want it in request only. I have tried the below options but they didn’t work for me.
option one
String value = (String) ctx.getExternalContext()
.getRequestParameterValuesMap()
.get("managedbean.property");
option two
String value = (String) ctx.getExternalContext()
.getRequestParameterValuesMap()
.get("property");
option three
HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance()
.getExternalContext().getRequest();
System.out.println(req.getParameter("property"));
option four
Map requestMap = FacesContext.getCurrentInstance()
.getExternalContext().getRequestHeaderValuesMap();
String msgId = (String) requestMap.get("property");
System.out.println(msgId);
option five
HttpServletRequestWrapper r = new HttpServletRequestWrapper(req);
String value1 = r.getParameter("managedbean.property");
i want the value not in the jsp’s managed bean … but i want it in some another managed bean. here i have pages inside a page(as i had mentioned its a tabbed panel). now i want the value in the managed bean of the outer tab –
Let first explain why the options you tried did not work:
Option 1 and 2 are invalid because it returns values(!!) as a
String[], not a single value asString.Option 3 should work if the parameter was there. But this is not a nice JSF-ish way.
Option 4 is invalid because the parameters are not set in the request header.
Option 5 is invalid because it simply makes no sense. You’re only adding an extra abstract layer in between which in fact doesn’t change anything here.
The JSF-ish way would be the using
ExternalContext#getRequestParameterMap():As to why option 3 does not work is likely because the parameter name is not what you think/expect it is. JSF namely prepends (woodstocks) client ID’s based on parent
UINamingContainercomponents in the view tree. Rightclick the generated HTML output of the JSF page in your webbrowser and choose View Source. Examine the name of the generated<input>element of interest. Use that name instead as parameter name.That said, this is after all a workaround not a solution. But we can’t reasonably suggest the real solution since the functional requirement and the code you have are not fully clear. You normally bind the input elements to a backing bean. If you’re actually inside a different backing bean, then you can also just access that backing bean from inside the backing bean and then in turn access the input value bound with it. See Injecting Managed Beans in each other for an how to.