最近做 JSF和我们自己实现的 pageFlow的整合,基本已经完全调通了。过程中间考虑到了对JSF的 PhaseListener的扩展,后来发现这个思路对我们这个工作并没有帮助,但是 已经摸透了这个技术点,就记录下来,以后可以查查看。
1)faces-config.xml的编辑
<lifecycle>
<phase-listener>com.primeton.jsf.FlowPhaseListener</phase-listener>
</lifecycle>
就可以了。
2)listener的编辑
因为马上就要从 自己的代码中把这个多余的代码去掉,所以,还是把code全部copy出来吧。
public class FlowPhaseListener implements PhaseListener {
public void afterPhase(PhaseEvent event) {
// TODO Auto-generated method stub
}
public void beforePhase(PhaseEvent event) {
FacesContext context=event.getFacesContext();
HttpServletRequest request=(HttpServletRequest)( context.getExternalContext().getRequest());
UIViewRoot root=context.getViewRoot();
String theActionString=getActionString(root);
if(theActionString==null)
return ;
else
{//下面是我们想在listener中做的事情
int i=theActionString.indexOf(".flow");
request.setAttribute("_eosFlowID", theActionString.substring(0, i+5));
request.setAttribute("_eosFlowAction", theActionString.substring(i+6,theActionString.length()));
}
}
//访问组件树哦,这个功能不错
private String getActionString(UIComponent comp)
{
String theActionString=null;
for (Iterator it = comp.getFacetsAndChildren(); it.hasNext(); )
{
UIComponent childOrFacet = (UIComponent)it.next();
if(childOrFacet instanceof ActionSource)
{
ActionSource source = (ActionSource) childOrFacet;
theActionString=source.getAction().toString();
if(null!=theActionString&&theActionString.length()>0&&theActionString.indexOf(".flow")>0)
return theActionString;
}
theActionString=getActionString(childOrFacet);
}
return theActionString;
}
//指定某个阶段
public PhaseId getPhaseId() {
// TODO Auto-generated method stub
return PhaseId.PROCESS_VALIDATIONS;
}
PhaseListener的思路和在JSF中的地位大家应该都已经清楚的,否则应该也不会看这个文章,这里就不说了。
分享到:
相关推荐
NULL 博文链接:https://thinkinginall.iteye.com/blog/649964
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...
jsf 分页 jsf 分页 jsf 分页 jsf 分页
NULL 博文链接:https://sailinglee.iteye.com/blog/426758
《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...
JSF中文教程JSF中文教程JSF中文教程JSF中文教程
主要讲述JSF的工作方式 JSF的工作方式 JSF架构 JSF模型 JSF事件类型
================================= JSF开发必备JAR ================================= <br>《JSF入门简单中文版》开篇提到JSF开发需要的jar,' 但是按其中提供的方法: <br>jstl.jar 与 ...
第一个JSF程序,初学JSF者必备,jsf架包 jsf实例
JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍
jsf1.2 core jsf jsf核心
JSF的学习入门知识教程,里面有例子还有各个标签的使用及属性介绍
jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces
jsf 中文文档jsf 中文文档jsf 中文文档jsf 中文文档
自己写的JSF文件上传项目,可以最大支持最大1.99G文件 需要的jar包需奥自己加 附:jar目录截图
JSF入门教程 JSF入门教程 JSF入门教程
JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等...
JSF入门详细资料(PDF),包括JSF入门中文版,JSF Web应用实战开发,以及JSF2,JSF入门必配学习资料
这里是jsf的tags的书籍。主要讲述jsf的用法。