我有一个<odc:tabbedPanel/>
组件.在这里我在<odc:bfPanel/>
组件中有一个页面.我想从<odc:bfPanel/>
我的<odc:tabbedPanel/>
托管bean类中的页面访问一个值(inputtext或radiobutton).请指导我如何解决这个问题.请注意,我不想在这里使用会话.我只想要它.我尝试过以下选项,但它们对我不起作用.
选项一
String value = (String) ctx.getExternalContext()
.getRequestParameterValuesMap()
.get("managedbean.property");
Run Code Online (Sandbox Code Playgroud)
选项二
String value = (String) ctx.getExternalContext()
.getRequestParameterValuesMap()
.get("property");
Run Code Online (Sandbox Code Playgroud)
选项三
HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance()
.getExternalContext().getRequest();
System.out.println(req.getParameter("property"));
Run Code Online (Sandbox Code Playgroud)
选项四
Map requestMap = FacesContext.getCurrentInstance()
.getExternalContext().getRequestHeaderValuesMap();
String msgId = (String) requestMap.get("property");
System.out.println(msgId);
Run Code Online (Sandbox Code Playgroud)
选项五
HttpServletRequestWrapper r = new HttpServletRequestWrapper(req);
String value1 = r.getParameter("managedbean.property");
Run Code Online (Sandbox Code Playgroud)
我想要的值不在jsp的托管bean中...但我希望它在另一个托管bean中.在这里我有一个页面内的页面(因为我已经提到它的标签面板).现在我想要外部选项卡的托管bean中的值 -
Bal*_*usC 29
首先解释为什么你尝试的选项不起作用:
选项1和2无效,因为它将值(!!)返回为a String[]
,而不是单个值String
.
如果参数存在,则选项3应该有效.但这不是一个很好的JSF方式.
选项4无效,因为请求标头中未设置参数.
选项5无效,因为它根本没有意义.你只是在它们之间添加一个额外的抽象层,实际上这里没有任何改变.
JSF-ish方式将是使用ExternalContext#getRequestParameterMap()
:
Map<String, String> parameterMap = (Map<String, String>) externalContext.getRequestParameterMap();
String param = parameterMap.get("paramName");
Run Code Online (Sandbox Code Playgroud)
至于为什么选项3不起作用可能是因为参数名称不是你想象/期望的那样.JSF是基于UINamingContainer
视图树中的父组件预先添加(woodstocks)客户端ID .在Web浏览器中右键单击生成的JSF页面的HTML输出,然后选择" 查看源".检查生成<input>
的感兴趣元素的名称.使用该名称作为参数名称.
也就是说,这毕竟是一种解决方法而不是解决方案.但是我们无法合理地建议真正的解决方案,因为功能要求和您拥有的代码并不完全清楚.您通常将输入元素绑定到辅助bean.如果您在不同的后台bean里面实际上是,那么你也可以只访问是从后台bean内支持bean,然后依次访问的输入值与它的约束.请参阅如何相互注入托管Bean.
归档时间: |
|
查看次数: |
61399 次 |
最近记录: |