4、自定义拦截器annotation
拦截器开发出来,我们下一步就是要将拦截器配置到action上,于是开始寻找相关的注解来配置action,JBoss seam提供了@Interceptors允许开发人员来配置多个拦截器。很兴奋的就开始配置了,但是总是报错。打开源代码一看,@Interceptors上标注着@Target(ANNOTATION_TYPE),这个注解只能用在annotation上。在网上搜一搜,原来需要配置一个自定义注解,在自定义注解中配置拦截器。代码如下:
Java代码
1. @Target( { ElementType.TYPE, ElementType.METHOD })
2. @Retention(RetentionPolicy.RUNTIME)
3. @Interceptors(DefaultActionInterceptor.class)
4. public @interface DefaultActionProxy {
5.
6. }
然后将该自定义注解标注在要拦截的action或方法上。
Java代码
1. @Name("resourceRegisterAction")
2. @Scope(ScopeType.PAGE)
3. @DefaultActionProxy
4. public class ResourceRegisterAction{
5. }
这样拦截器就可以工作了。如果类中的某些方法不需要拦截,则只要加上@BypassInterceptors就好了。至今不明白为什么JBoss seam要采用这样的方式,而不是直接像EJB拦截器配置一样,直接在action上配置拦截器链。
5、在页面上显示弹出消息提示
在页面上,我们采用Richfaces和Ajax4Jsf的组件包(强烈建议使用JSF的应用引入这两个组件包),对于所有的时间操作,我们通过<a4j:status>这个标签监听状态。在执行的过程中,# {rich:component('wait')}.show()执行显示进度条。在进度条结束之后,我们将弹出相应的消息提示框,通过# {rich:component('popMsg')}.show()来显示出来。注意,在显示弹出框以后,我们要进行一定的判断,对于没有消息的情况,我们要自动把弹出框关闭。Js代码:onshow="if(!# {facesContext.externalContext.requestMap.containsKey('_pop')})#{rich:component('popMsg')}.hide();"
XML/HTML代码
1. <a4j:status onstart="#{rich:component('wait')}.show()"
2. onstop="#{rich:component('wait')}.hide();#{rich:component('popMsg')}.show();" />
3. <rich:modalPanel id="wait" width="200" height="120" moveable="false"
4. resizeable="false">
5. <f:facet name="header">
6. <h:outputText value="进度条" />
7. </f:facet>
8. <h:outputText value="正在操作请稍后....." />
9. </rich:modalPanel>
10. <rich:modalPanel id="popMsg" width="200" height="120" onshow="if(!#{facesContext.externalContext.requestMap.containsKey('_pop')})#{rich:component('popMsg')}.hide();">
11. <f:facet name="header">
12. <h:panelGroup>
13. <h:outputText
14. value="#{facesContext.externalContext.requestMap.get('_pop').header}">
15. </h:outputText>
16. </h:panelGroup>
17. </f:facet>
18. <f:facet name="controls">
19. <h:panelGroup>
20. <h:commandLink action="success" value="关闭" id="hidelink">
21. <f:actionListener
22. type="org.oecp.web.listener.RemovePopMsgListener" />
23. </h:commandLink>
24. <rich:componentControl for="popMsg" attachTo="hidelink"
25. operation="hide" event="onclick" />
26. </h:panelGroup>
27. </f:facet>
28. <h:outputText
29. value="#{facesContext.externalContext.requestMap.get('_pop').text}" />
30. </rich:modalPanel>
为什么我们要采用JSF上下文来存取消息提示而不是采用#{action.message.text}这样的形式呢?因为我们在构建这个消息提示体系的时候的思路就是要组件化和统一化,而不能和任何一个action绑死。利用JSF上下文,我们就可以实现manage bean无关话,这段页面代码就自然从各业务页面中分离出来,放在模板页中,被所有的页面加载。利用关闭按钮的监听器,我们就把消息删掉。
6、测试
页面代码片段:
XML/HTML代码
1. <rich:menuItem submitMode="ajax" value="新建根节点"
2. action="#{resourceRegisterAction.createParent}"
3. icon="/images/icons/create_doc.gif" reRender="info,popMsg">
4. </rich:menuItem>
注意:在reRender属性中,一定要有”popMsg”,这是消息提示数据响应区的ID
Action:
Java代码
1. public void createParent() throws BusinessEJBException {
2. try {
3. int i = 1 / 0;
4. } catch (Exception e) {
5. throw new BusinessEJBException("业务异常啦~~~");
6. }
7. }
效果:
- 大小: 12.3 KB
分享到:
相关推荐
JBoss Seam JBoss Seam JBoss Seam
JBOSS SEAM组件中文手册 Seam_2.0_Reference_zh_CN
Jboss Seam中文参考手册,通过大量的实例详细介绍seam的使用
整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。
Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了Hibernate ...
jbossseam eclipse安装 例子学习.doc jfreechart flex
JBOSS_SEAM配置
[TipTec Development] JSF & Facelets & JBoss Seam 核心技术 (英文版) [TipTec Development] Essential JSF, Facelets & JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] TipTec ...
jboss seam 参考,英文, seam包内的参考文档
jboss seam 和jsf2 开发好书
java jboss seam jboss-seam-selectitems
JBoss Seam的简介 入门开发的领路杰作
jboss -seam 绝对有用教程,
个人收集整理的最全面seam文档 包括seam_reference(中、英) richfaces jsf a4j 以及seam一些其他主要功能
一份非常好的seam简介,简明扼要,有开发的例子介绍。
CJ电子书系列(1) 网上一篇介绍JBoss Seam的好文深入浅出《JBoss Seam》,有人把它翻译成中文,我把它制作成PDF,希望更多的人能够读到更好的java 技术文章。
jboss教程 深入浅出JBoss+Seam
深入浅出JBoss Seam 作者 Michael Yuan 译者 包亮 本文节选了Michael Yuan和Thomas Heute所著的即将出版JBoss Seam: Power and Flexibility Beyond Java EE 5.0第一章和第二章,内容有所删减。
[Apress] JSF 2 APIs & JBoss Seam 基础教程 (英文版) [Apress] Beginning JSF 2 APIs and JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] Apress [出版日期] 2009年05月25日 ...
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...