当前位置:  开发笔记 > 程序员 > 正文

从JSF页面获取请求和会话参数和属性

如何解决《从JSF页面获取请求和会话参数和属性》经验,为你挑选了6个好方法。

我正在使用带有facelets的JSF,我需要在JSF页面中获取请求和会话参数.在JSP页面中,我得到了这样的参数:"${requestScope.paramName}""${sessionScope.paramName}".但是现在使用JSF之后只有bean,除了bean属性之外你无法获得任何值.

注意:会话属性我需要使用acegi安全性自动填充,因此我无法访问它们.

那现在该怎么办?



1> McDowell..:

您可以使用表达式获取请求参数id:


param - 此请求的请求参数的不可变映射,由参数名称键入.仅包含每个参数名称的第一个值.

sessionScope -A此请求的会话属性的映射,由属性名称键入.

JSF 1.0规范的 5.3.1.2节定义了必须由变量解析器解析的对象.



2> Drew..:

您还可以使用bean(建议使用作用域)并通过FacesContext直接访问上下文.

您可以使用以下代码获取HttpServletRequest和HttpServletResposne对象:

HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse res = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();

在此之后,您可以getParameter(paramName)通过getParameterMap() req对象访问各个参数或通过对象访问完整的地图

我建议使用请求范围的bean的原因是你可以在初始化期间使用这些(最糟糕的情况是构造函数.大多数框架在bean初始化时为你提供了一些代码)并且它们将在你的请求进入时完成.

然而,它有点像黑客.;)您可能想要查看是否有一个JSF Acegi模块,它允许您访问所需的变量.


+1,但是谁在世界上想出了一个如此荒谬的API来获取单个参数?

3> ustun..:

你可以使用

要么

但是,如果要将参数传递给后台bean,f:viewParam可能正是您想要的."视图参数是查询字符串参数和模型值之间的映射."

这会将GET参数的id参数设置为博客bean的entryId字段.有关详细信息,请参见http://java.dzone.com/articles/bookmarkability-jsf-2.



4> 小智..:

你可以这样:

#{requestScope["paramName"]} ,#{sessionScope["paramName"]}

因为requestScope或是sessionScope一个Map对象.



5> Lincoln..:

您还可以使用像OcpSoft的PrettyFaces这样的工具将动态参数值直接注入JSF Beans.



6> Omar..:

假设您已将对象作为属性放在FacesContext来自托管bean 的当前实例的会话映射中,您可以通过以下方式从JSF页面获取它:


如果您的对象有属性,请通过以下方式获取:


推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有