当前位置: 首页 > 面试题库 >

在JSF中获取请求参数值

鞠鸿雪
2023-03-14
问题内容

我有一个<odc:tabbedPanel/>组件。在其中,我在<odc:bfPanel/>组件中有一个页面。我要访问的值从页面(一个inputText的或单选按钮的)<odc:bfPanel/>在我的<odc:tabbedPanel/>管理bean类。请指导我如何去做。请在这里注意,我不想在这里使用会话。我只需要请求。我尝试了以下选项,但它们对我没有用。

选项一

String value = (String) ctx.getExternalContext()
                        .getRequestParameterValuesMap()
                        .get("managedbean.property");

选项二

String value = (String) ctx.getExternalContext()
                         .getRequestParameterValuesMap()
                         .get("property");

选项三

HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance()
                         .getExternalContext().getRequest();
System.out.println(req.getParameter("property"));

选项四

Map requestMap = FacesContext.getCurrentInstance() 
                         .getExternalContext().getRequestHeaderValuesMap(); 
String msgId = (String) requestMap.get("property"); 
System.out.println(msgId);

选项五

HttpServletRequestWrapper r = new HttpServletRequestWrapper(req);
String value1 = r.getParameter("managedbean.property");

我希望该值不在jsp的托管bean中……但我希望在另一个托管bean中获得。在这里,我在页面内有页面(正如我之前提到的选项卡式面板)。现在我想要外部选项卡的托管bean中的值–


问题答案:

让我们先解释一下为什么您尝试的选项不起作用:

选项1和2无效,因为它返回values(!!)作为a String[],而不是单个值as String

如果参数在那里,则选项3应该起作用。但这不是JSF式的好方法。

选项4无效,因为未在请求标头中设置参数。

选项5无效,因为它根本没有意义。您只是添加了一个额外的抽象层,而在这两个抽象层之间实际上并没有改变任何内容。

类似于JSF的方式是使用ExternalContext#getRequestParameterMap()

Map<String, String> parameterMap = (Map<String, String>) externalContext.getRequestParameterMap();
String param = parameterMap.get("paramName");

至于为什么选项3不起作用的原因很可能是参数名不是您认为/期望的那样。JSF即根据UINamingContainer视图树中的父组件添加(木料)客户ID
。右键单击Web浏览器中JSF页面的生成的HTML输出,然后选择 查看源 。检查所生成<input>的感兴趣元素的名称。使用
名称作为参数名称。

也就是说,这毕竟是解决方法,而不是解决方案。但是由于功能要求和代码尚不完全清楚,我们无法合理地建议 真正的
解决方案。您通常将输入元素绑定到支持bean。如果您在不同的后台bean里面实际上是,那么你也可以只访问
从后台bean内支持bean,然后依次访问的输入值与它的约束。有关如何操作,请参见相互注入托管Bean。



 类似资料:
  • 问题内容: 如何在支持JSF页面的bean中获得请求URL?我一直在浏览FacesContext文档,发现的最佳方法似乎很长: 编辑:功能要求 这里的要求是我们需要第三方javascript实用程序的完整URL。该实用程序的使用或体系结构不适用于JSF,但除此调用外的所有内容都适用。我发现的方法可以用,但是深入研究FacesContext感觉不对。另外,我希望可以使用JSF表达式语言调用此方法,因

  • 问题内容: 如何在Jinja2模板中检索请求参数? 问题答案: 我对这个答案有些迟,但是其他解决方案并不能真正解决你使用Flask的问题。 将Flask与Jinja2一起使用的事实使你的情况与其他框架有所不同。Flask实际上使所有Jinja2模板中都可以使用一些全局变量,而无需你将它们显式传递给模板。 在http://flask.pocoo.org/docs/templating/#standa

  • 主要内容:通过 HttpServletRequest 获取请求参数,通过形参获取请求参数,使用 @RequestParam 注解获取,通过实体类对象获取(推荐),解决获取请求参数的乱码问题Spring MVC 提供了多种获取请求参数的方式: 通过 HttpServletRequest 获取请求参数 通过控制器方法的形参获取请求参数 使用 @RequestParam 注解获取请求参数 通过实体类对象获取请求参数(推荐) 下面我们就对这些获取请求参数的方式一一进行介绍。 通过 HttpServlet

  • 问题内容: 如何从JavaScript请求中获取“ GET”变量? 是jQuery还是YUI!内置此功能吗? 问题答案: 所有数据均在 您必须解析字符串,例如。 只需以GET变量名作为参数调用该函数,例如。 如果变量没有值或不存在,则此函数将返回变量value或undefined

  • 上面的代码中,我需要在onSuccess中获取page的值,但是onSuccess的参数只有data,没有variables,react-query的版本是3.29,请问怎么解决。

  • 我正在创建 Spring Boot Web 服务,我有一个模范员工 我想创建一个Get请求,它将根据用户给定的参数获取和过滤员工列表。 例如,如果用户提供员工的姓名和员工的指定,则 get 方法应筛选这些结果。对于各种参数组合,它应该可以工作。 为了避免多个if else情况,我根据上面的字符串和整数过滤列表。 我想我在下面的代码中犯了一个错误,该代码在控制器中发送请求。