关键字: f:view beforephase的用法
在JSF1.2中,标签<f:view>中添加了beforePhase、afterPhase两个属性,这两个属性有什么用呢?本文就是来说明这个问题。
首先来看代码:
- <f:view beforePhase="#{userList.init}">
- <h:form>
- <h:dataTable border="1" value="#{userList.users}" var="usr" binding="#{userList.data}">
- <h:column id="column1">
- <f:facet name="header">
- <h:outputText value="Name"></h:outputText>
- </f:facet>
- <h:outputText value="#{usr.name}"></h:outputText>
- </h:column>
- <h:column id="column2">
- <f:facet name="header">
- <h:outputText value="Age"></h:outputText>
- </f:facet>
- <h:outputText value="#{usr.age}"></h:outputText>
- </h:column>
-
- <h:column id="column3">
- <f:facet name="header">
- <h:outputText id="text3" value="Birthday"></h:outputText>
- </f:facet>
- <h:outputText value="#{usr.birthday}"></h:outputText>
- </h:column>
- <h:column id="column4">
- <f:facet name="header">
- <h:outputText id="text4" value="Gender"></h:outputText>
- </f:facet>
- <h:outputText value="Male" rendered="#{usr.gender}"></h:outputText>
- <h:outputText value="Female" rendered="#{!usr.gender}"></h:outputText>
- </h:column>
- <h:column id="column5">
- <f:facet name="header">
- <h:outputText id="text5" value="Email"></h:outputText>
- </f:facet>
- <h:outputText value="#{usr.email}"></h:outputText>
- </h:column>
- <h:column id="column6">
- <f:facet name="header">
- <h:outputText id="text6" value="Country"></h:outputText>
- </f:facet>
- <h:outputText value="#{usr.country}"></h:outputText>
- </h:column>
- <h:column id="column7">
- <f:facet name="header">
- <h:outputText id="text7" value="Operation"></h:outputText>
- </f:facet>
- <h:commandLink value="Update" action="#{userList.update}" ></h:commandLink>
-
- <h:commandLink value="Delete"></h:commandLink>
- </h:column>
-
- </h:dataTable>
- </h:form>
- </f:view>
<f:view beforePhase="#{userList.init}">
<h:form>
<h:dataTable border="1" value="#{userList.users}" var="usr" binding="#{userList.data}">
<h:column id="column1">
<f:facet name="header">
<h:outputText value="Name"></h:outputText>
</f:facet>
<h:outputText value="#{usr.name}"></h:outputText>
</h:column>
<h:column id="column2">
<f:facet name="header">
<h:outputText value="Age"></h:outputText>
</f:facet>
<h:outputText value="#{usr.age}"></h:outputText>
</h:column>
<h:column id="column3">
<f:facet name="header">
<h:outputText id="text3" value="Birthday"></h:outputText>
</f:facet>
<h:outputText value="#{usr.birthday}"></h:outputText>
</h:column>
<h:column id="column4">
<f:facet name="header">
<h:outputText id="text4" value="Gender"></h:outputText>
</f:facet>
<h:outputText value="Male" rendered="#{usr.gender}"></h:outputText>
<h:outputText value="Female" rendered="#{!usr.gender}"></h:outputText>
</h:column>
<h:column id="column5">
<f:facet name="header">
<h:outputText id="text5" value="Email"></h:outputText>
</f:facet>
<h:outputText value="#{usr.email}"></h:outputText>
</h:column>
<h:column id="column6">
<f:facet name="header">
<h:outputText id="text6" value="Country"></h:outputText>
</f:facet>
<h:outputText value="#{usr.country}"></h:outputText>
</h:column>
<h:column id="column7">
<f:facet name="header">
<h:outputText id="text7" value="Operation"></h:outputText>
</f:facet>
<h:commandLink value="Update" action="#{userList.update}" ></h:commandLink>
<h:commandLink value="Delete"></h:commandLink>
</h:column>
</h:dataTable>
</h:form>
</f:view>
我们在这个页面上显示一个Datatable,在f:view中使用beforePhase,设为userList.init,下面来看user.init方法:
- public void init(PhaseEvent phaseEvent) {
- if (users.size() == 0) {
- for (int i = 0; i < 10; i++) {
- User user = new User();
- user.setName("Peter");
- user.setAge(i * 2 + 1);
- user.setBirthday(new Date());
- user.setCountry("China");
- user.setEmail("as" + i + "@sina.com");
- if (i % 2 == 0)
- user.setGender(true);
- else
- user.setGender(false);
- user.setIntroduction("Hello,Every One!");
- users.add(user);
-
- }
- }
- System.out.println("total users are: " + users.size());
- }
public void init(PhaseEvent phaseEvent) {
if (users.size() == 0) {
for (int i = 0; i < 10; i++) {
User user = new User();
user.setName("Peter");
user.setAge(i * 2 + 1);
user.setBirthday(new Date());
user.setCountry("China");
user.setEmail("as" + i + "@sina.com");
if (i % 2 == 0)
user.setGender(true);
else
user.setGender(false);
user.setIntroduction("Hello,Every One!");
users.add(user);
}
}
System.out.println("total users are: " + users.size());
}
在这段代码中,初始化了DataTable中的数据,也就是页面中的数据,下面是页面执行时候打印出来的生命周期记录:
Processing a new Request!
Before Phase: RESTORE_VIEW 1
After Phase: RESTORE_VIEW 1
Before Phase: RENDER_RESPONSE 6
total users are: 10
After Phase: RENDER_RESPONSE 6
End JSF Request!
可以看出,user.init方法字啊第六个阶段的开始被执行,因此我们可以认为,beforePhase方法相当于注册一个PhaseListener,并且专门在本页面生效,因此也相当于JSP中的Page scope的效果,解决了JSF1.1开发中遇到的Page Scope的问题
分享到:
相关推荐
::before 用法:view::before,表示在该view组件的前面加入内容 ::after 用法:view::after,表示在该view组件的后面加入内容 这里是双冒号,不是单冒号。单冒号是CSS2的内容,双冒号是CSS3
PLIN-View基本使用方法
VMware Horizon View 5.2配置手册之八:View日志数据库配置
Android:View和Adapter结合使用,ListView列表视图,GridView视图,Spinner下拉框的使用代码实例
F:\学习\SystemView动态系统仿真软件》教材\SystemView动态系统仿真软件》教材.rarF:\学习\SystemView动态系统仿真软件》教材\SystemView动态系统仿真软件》教材.rar
Java Server Faces API 组件标签 API Reference 速查手册 ... javax.faces.Command javax.faces.Button ...f:view h:column h:commandButton h:commandLink h:dataTable h:form h:graphicImage
我的博客《Android动画之二:View Animation》附带源码
使用方法: 1、修改ubbsimple中环境变量 2、修改make.cmd文件中的环境变量 3、用viewc -n aud.v 进行编译,生成对应的 aud.h文件和 aud.VV文件 4、运行cmd,运行make文件 5、运行生成的clt.exe可执行文件 运行结果: ...
iOS 7学习:View Controllers之间的切换动画对应的Demo。
Re:VIEW Re:VIEW是用于纸质书和电子书的易于使用的数字出版系统。 支持的格式输出格式Re:VIEW支持:EPUB LaTeX InDesign(IDGXML)Markdown纯文本(TOPBui Re:VIEW Re:VIEW是用于纸质书和电子书的易于使用的...
此手册旨在搭建VMware Horizon View 5.2 的测试环境。 1、VMware Horizon View 5.2 配置手册之一:域、DNS、DHCP 安装配置 ...15、VMware Horizon View 5.2 配置手册之十五:View 组策略简单使用
使用方法可见示例: 子View遍历 ViewGroup root = (ViewGroup) findViewById(android.R.id.content); LayoutTraverser.build(new LayoutTraverser.Processor() { @Override public void process(View view) { //...
Timeline-View Android Timeline View Library (Using RecyclerView) is simple implementation used to display view like Tracking of shipment/order, steppers etc. Specs Badges/Featured In Sample ...
为你提供详细的systemview软件(关于通信原理课程)使用方法介绍
通过该PPT即可快速掌握systemview软件的使用方法
LikeView How to use 1、To include likeview to your project: add the dependency to the the build.gradle file compile 'com.jaren:likeview:1.2.1' 2、Create likeview : create default create with ...
ViewCapture provided View, ScrollView, HorizontalScrollView, ListView, RecyclerView, WebView screenshots. RecyclerView currently only support LinearLayoutManager.VERTICAL support android sdk ...
微信小程序学习demo:视图控件View、ScrollView、Swiper(源代码+截图)微信小程序学习demo:视图控件View、ScrollView、Swiper(源代码+截图)微信小程序学习demo:视图控件View、ScrollView、Swiper(源代码+截图)微信...
增加ViewFlipper中view的复用,完成ViewFlipper的优化使用