转自:http://www.blogjava.net/ljl2004/archive/2006/06/01/49431.html
在同一个页面实现功能,可以用ActionListener或用Action过程指向自身。
在不同的页面之间导航,可以用Action或Action过程,用ActionListener来处理传递的参数,加载数据。
一般的流程是:向一个页面传递参数,并依参数对这个页面的数据进行初始化,加载数据,然后再在视图jsp中显示数据。当然,简单的页面不需要接受参数,甚至不用加载数据。
由一个页面向另一个页面传递参数方法:
a.在facesconfig.xml的配置文件中,向该页面的ManageredBean的ManageredProperty注入request的参数#{param.name}
b.先获取该页面的ManageredBean,在代码中向它设值。
//获取BackingBean
Object BackingBean= FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(context, "BeanName");
c.向request中设值,再在该页面的ManageredBean中读取。
//设request值
FacesContext.getCurrentInstance().getExternalContext.getRequestMap().put("someKey", "someValue");
//读request值
Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String someValue = params.get("
id
");
d.设置ActionListener(一般用于处理页面部件的事件。)
e.设置Session(Application)或用作用范围为Session(Application)的ManagerdBean.(该两类Bean存活范围长,占用服务器资源,开销较大,不能大量使用。一般不用于向另一个页面传递参数。)
JSF页面初始化数据的方法(实际上是初始化它的BackingBean,让它依据不同的条件(参数)装载数据):
1.在BackingBean的无参数的构造函数中初始化(如读取向它传递的Request等值、读取数据库或文件中持久的数据)
缺点:必须放弃ManageredProperty的注入,用Request来传递参数。因为构造函数先执行,然后再来注入属性值。
优点是:简单,易用,不易出错。且可以直接用标准Url方式调用,如/ok.jsf?name=john,与其它的java web程序好兼容。
2.利用ManageredBean的ManagerdProperty的值注入。包括注入Request参数 如#{parap.name}.在get或Set某一属性时,依据传递的参数来初始化数据。
(在set某个属性时初始化,容易产生有些属性还没有被注入初始化,而在get某个属性时初始化数据,又有可能该属性未被调用,则无法完成初始化工作了。)
3.在代码Action中转向前获取该页面的BackingBean,来初始化它。
缺点是:依赖于代码Action,不能直接用URL。容易产生BackingBean中的相互依赖。
4.用ActionListener侦听某个Action执行后,再来解析Request参数或jsf部件值,来加载数据。
分享到:
相关推荐
在JavaServer Faces (JSF)框架中,参数传递是一个关键的...对于简单页面,可能不需要接收参数或加载数据,但复杂场景下参数传递是必不可少的。理解并熟练运用这些传递策略可以帮助开发者构建高效、可扩展的JSF应用。
控制器(通常是管理Bean的一个实例)可以直接调用模型Bean的setter方法来设定要显示的数据,然后再由JSF框架负责将这些数据映射到页面上相应的UI组件中。 #### 插件功能:增强灵活性 JSF的插件系统,尤其是`...
**Ajax请求的发送**:在JSF页面中,你可以使用Ajax4JSF提供的组件,如`a4j:support`或`a4j:commandButton`,来触发Ajax请求。这些组件可以绑定到特定的事件,当事件发生时,会向服务器发送异步请求。 **决定发送...
在JavaServer Faces (JSF) 应用程序中,分页是提高用户体验和优化性能的重要技术,特别是当处理大量数据时。"JSF分页控件" 是一个专门设计用于处理大数据集并提供用户友好查询分页功能的组件。本文将深入探讨JSF分页...
5. **分页参数传递**:在URL中或者使用隐式请求参数(例如,通过`f:param`标签)传递分页信息,使得服务器能够理解用户请求的页码。 6. **响应处理**:服务器根据请求处理结果,将新的数据发送回客户端,并可能更新...
- **a4j:actionparam**:传递参数到Ajax请求。 - **a4j:status**:显示Ajax请求的状态。 - **a4j:loadBundle** 和 **a4j:mediaOutput**:分别处理资源加载和多媒体输出。 ### 4. **Ajax4jsf的换肤功能** Ajax4jsf...
这些更新后的数据会被自动传递回前端,更新对应的下拉列表。 总的来说,JSF三级级联是通过JSF组件、JavaScript以及后台数据处理协同工作的。它利用了JSF的AJAX特性,实现了动态更新页面部分的能力,从而提供了流畅...
- **a4j:actionparam**:传递额外的参数给服务器。 - **a4j:status**:显示操作状态。 - **a4j:loadBundle**:加载资源文件。 - **a4j:mediaOutput**:输出媒体文件。 #### 五、Ajax4jsf内建的换肤功能 - **...
这种页面范围的Ajax支持使得你可以定义一个触发Ajax请求的事件,并在接收到客户端事件后,根据需要更新服务器端数据,同步JSF组件树以反映页面变化。 Ajax4JSF的组件库包括一系列的标签,如: 1. `a4j:ajax...
-- 前端JSF页面 --> <!-- 后端Managed Bean --> @ManagedBean @ViewScoped public class Bean { private String inputValue; private String outputValue; public void handleInput...
9. **示例代码解析**: 对压缩包中的“simple”文件进行分析,可能包含了基础的JSF页面结构、JSF动作监听器、ArcGIS API的JavaScript代码片段,以及如何将它们组合在一起创建一个完整的GIS应用。 通过学习这个案例,...
为了实现基本的 AJAX Echo 功能,你需要创建一个简单的 JSP 页面,定义数据 Bean,并在配置文件中声明相关组件。 ### 2. Ajax4jsf 框架的基本概念 Ajax4jsf 的核心理念是将 AJAX 功能与 JSF 生命周期紧密结合,...
- **使用EL表达式引用Bean**:通过`#{beanName.propertyName}`语法可以在JSF页面中引用Bean的属性。 - **数据绑定**:可以直接将表单字段与Bean的属性进行绑定,从而简化数据处理流程。 - **事件监听**:可以定义...
4. **参数传递**:通过HTTP请求参数传递当前页码和每页大小,如`?pageNum=1&pageSize=10`。 5. **链接生成**:在JSP页面中创建分页链接,利用EL表达式动态生成不同的URL。 6. **缓存策略**:根据应用需求,可能...
- **URL参数传递**:在链接中传递必要的参数。 - **动态内容构建**:在输出格式中插入动态值。 --- #### f:selectItem —— 设置选择项 `f:selectItem` 标签用于为`UISelectOne` 或 `UISelectMany` 组件设置选择...
6. **Ajax支持**:虽然JSF 1.2不包含完整的Ajax功能,但它开始支持部分刷新,通过`PartialRequest`和`PartialResponse`接口,开发者可以更新页面的一部分而无需重新加载整个页面。 7. **安全性和性能优化**:JSF ...
8. 标签用于创建隐藏字段,如前所述,可以用来传递参数,但不显示在页面上。 9. 标签用于创建链接,它可以绑定到后台bean的方法,类似于,但不会触发请求处理,只是简单地导航到指定的URL。 10. JSF的表单处理通常...