`

richfaces3.3 tabPanel 使用报空指针 已解决

    博客分类:
  • JAVA
 
阅读更多

 

最近在使用richfaces-ui-3.3.3.Final的rich:tabPanel的时候,没有给rich:tab设置name属性,然后就会在表单提交的时候报空指针,然后查看源码后,发现UITabPanel类使用name进行比较是否是该tab

 

官方使用手册文档

 

http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_tabPanel.html

 

针对于tabPanel的说明:

 

There is also the "selectedTab" attribute. The attribute keeps an active tab name; therefore, an active tabPanel could be changed with setting a name of the necessary tab to this attribute.

 

粗略翻译:有一个selectedTab属性。该属性保持一个活动的tab name;因此,一个活动的tabPanel被改变,就伴随着设定一个name属性给该tab

 

 

 

 

空指针:

 

Caused by: java.lang.NullPointerException

 

at org.richfaces.component.UITabPanel.queueEvent(UITabPanel.java:266)

 

at javax.faces.event.FacesEvent.queue(FacesEvent.java:130)

 

at org.richfaces.renderkit.TabPanelRendererBase.doDecode(TabPanelRendererBase.java:106)

 

at org.ajax4jsf.renderkit.RendererBase.decode(RendererBase.java:75)

 

at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:790)

 

at javax.faces.component.UIInput.decode(UIInput.java:744)

 

at org.richfaces.component.UISwitchablePanel.processDecodes(UISwitchablePanel.java:167)

 

at org.richfaces.component.UITabPanel.processDecodes(UITabPanel.java:155)

 

at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1042)

 

at org.ajax4jsf.component.UIAjaxForm.processDecodes(UIAjaxForm.java:65)

 

at org.ajax4jsf.component.UIAjaxRegion.processDecodes(UIAjaxRegion.java:103)

 

at org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:400)

 

at org.ajax4jsf.component.ContextCallbackWrapper.invokeContextCallback(ContextCallbackWrapper.java:44)

 

at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1253)

 

... 45 more

 

页面代码:

 

 

<a4j:form id="budgetform">

 

<rich:tabPanel id="tpBudgetCollection" switchType="client" immediate="true" selectedTab="tbBudget" >

 

<!-- name 设置成formID:tabId 即budgetform:tbBudget-->

 

 <rich:tab id="tbBudget" label="aa" name="budgetform:tbBudget" immediate="true">

 

</rich:tab>

 

<!-- name 设置成formID:tabId 即budgetform:tbCollection -->

 

<rich:tab id="tbCollection" label="bb" name="budgetform:tbCollection" immediate="true">

 

</rich:tab>

 

<a4j:commandButton id="submitForm" value="submit" action="#{testController.save}" ></a4j:commandButton>

 

 

</a4j:form>

 

 

 

richfaces-ui-3.3.3.Final源码下载页面:http://www.jboss.org/richfaces/download/stable

 

查看源码:

 

private UITab processedTab(UIComponent component, Object object){

 

    if (object != null) {

 

             return getTabWithName(object);

 

        }

 

        return (UITab)component;

 

    }

 

 

 

    //TODO use getTabs() iterator

 

    private UITab getTabWithName(Object tabName){

 

    List children = getChildren();

 

    for (Iterator iterator = children.iterator(); iterator.hasNext();) {

 

UIComponent childComponent = (UIComponent) iterator.next();

 

                        //因在这里tabName为"",没有一个匹配上的,所以返回null。

 

if(childComponent instanceof UITab && ((UITab)childComponent).getName().equals(tabName)){

 

return (UITab)childComponent; 

 

}

 

}

 

    return null;

 

    }

 

 

 

    public void queueEvent(FacesEvent event) {

 

    if(event instanceof SwitchablePanelSwitchEvent && this.equals(event.getComponent())){

 

    SwitchablePanelSwitchEvent switchEvent = (SwitchablePanelSwitchEvent)event; 

 

    UITab tab = processedTab(switchEvent.getEventSource(),switchEvent.getValue());    

 

    //Check if target Tab is immediate

 

                //在这里就会报空指针异常

 

    processedTabImmediate = tab.isImmediate();

 

    }

 

    if(event instanceof ActionEvent && event.getComponent()instanceof UITab){

 

    if(isImmediate()){

 

    event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);

 

    }

 

    }

 

    super.queueEvent(event);

 

    }

 

 

0
1
分享到:
评论

相关推荐

    RichFaces 3.3 帮助文档(英文)

    ### RichFaces 3.3 帮助文档关键知识点概览 #### 一、简介 - **RichFaces框架概述:** RichFaces是一个基于JavaServer Faces(JSF)的开源组件库,提供了大量的富客户端组件以及对皮肤的支持。该文档详细介绍了如何...

    jboss Richfaces3.3

    对于jboss Richfaces3.3界面重用做了比较详尽的讲述。 在对界面了解的同时,也对Richfaces组件也能有进一步的了解。 里面的英文理解起来很简单,可以提高英文阅读水平。 对于richfaces与ajax的诸多关系,也做了介绍...

    JBoss_RichFaces_3.3

    ### JBoss RichFaces 3.3:增强JSF Web应用程序的强大力量 #### 引言 《JBoss RichFaces 3.3》是一本专为希望利用强大的AJAX组件来增强JSF(JavaServer Faces)Web应用的开发人员而编写的书籍。作者Demetrio ...

    richfaces-ui-3.3.GA jar

    - "richfaces3.3":这是 RichFaces 的特定版本标签,表示讨论的是3.3版本。 - "richfaces.jar":这是 RichFaces 库的 JAR 文件名,通常包含了框架的核心功能。 - "ajax4jsf":Ajax4JSF 是 RichFaces 的早期名称,它...

    Richfaces3.3.3常用组件使用手册,非常全

    Richfaces3.3.3常用组件使用手册 便于学习Richfaces和a4j和jsf框架 很好很实用

    richfaces_usersguide 3.3

    《深入解析RichFaces 3.3用户指南:框架精髓与实战应用》 一、引言:RichFaces框架概览 RichFaces 3.3作为一款先进的企业级开发框架,为开发者提供了丰富的组件库以及强大的皮肤支持,极大地提升了Web应用程序的...

    richfaces livedemo 3.3最新Eclipse工程

    **标题解析:** "richfaces livedemo 3.3最新Eclipse工程" 指的是一款基于RichFaces 3.3版本的LiveDemo项目,它是一个集成在Eclipse开发环境中的示例应用。RichFaces是JavaServer Faces (JSF) 技术的一个扩展库,...

    richfaces demo 3.3

    richfaces Demo 最新版3.3下载,直接放在tomcat上即可运行,访问网址:http://localhost:8080/richfaces-demo-3.3.0.GA-tomcat6

    Richfaces组件使用指南

    **Richfaces组件使用指南** 富Faces(Richfaces)是一个基于JavaServer Faces (JSF) 技术的开源组件库,提供了丰富的用户界面组件和Ajax功能,用于构建动态、交互式的Web应用程序。它属于JBoss项目的一部分,为开发...

    Richfaces 常用组件使用手册中文版

    《Richfaces 常用组件使用手册中文版》是一份专为中文读者准备的指南,它详细介绍了如何在Web开发中使用Richfaces组件。Richfaces是一个基于JSF(JavaServer Faces)的框架,提供了丰富的组件库以支持丰富的用户界面...

    JSF2和RICHFACES4使用指南

    JSF2和RICHFACES4使用指南

    Richfaces3.3.3常用组件使用手册

    本文档主要根据richfaces3.3.3 用户手册和demo 编写。 Richfaces 下载地址http://www.jboss.org/richfaces/download/stable。 demo 下载地址http://www.jboss.org/richfaces/demos。

    richfaces详细使用

    RichFaces凭借其强大的功能集、灵活的组件库、高效的资源管理和皮肤技术支持,已成为构建现代化、高性能Web应用程序的理想选择。掌握RichFaces的核心概念和技术要点,对于任何致力于提升Web开发效率、优化用户体验的...

    richfaces 相关资料

    这本书可能涵盖了RichFaces的实践应用,包括如何在项目中集成RichFaces,使用特定组件进行开发,以及解决常见问题的方法。读者可能能从中学习到如何创建动态表单、使用Ajax事件、自定义组件样式,以及优化性能的技巧...

    Richfaces组件使用指南.doc

    RichFaces 组件使用指南 RichFaces 是一个基于 Java 服务器 Faces(JSF)规范的开源组件库,由 JBoss 社区维护。RichFaces 提供了一系列的 AjaxEnabled 组件,可以帮助开发者快速构建富互联网应用程序。本指南将...

    使用richfaces需要用到的jar包

    使用richfaces需要用到的jar包! commons-beanutils-1.7.0.jar,commons-codec-1.3.jar,commons-collections-3.2.jar,commons-digester-1.8.jar,commons-discovery-0.4.jar,commons-el-1.0.jar,commons-...

    richfaces-demo-3.1.6.GA-tomcat6

    richfaces-demo-3.1.6.GA-tomcat6richfaces-demo-3.1.6.GA-tomcat6richfaces-demo-3.1.6.GA-tomcat6richfaces-demo-3.1.6.GA-tomcat6richfaces-demo-3.1.6.GA-tomcat6richfaces-demo-3.1.6.GA-tomcat6richfaces-demo...

    richfaces中文开发文档

    在使用过程中,开发者可以按照文档逐步了解和掌握各个组件的用法,快速上手并解决实际问题。 总之,RichFaces是JSF开发中的有力工具,它通过丰富的组件和Ajax功能,提升了Web应用的交互性和效率。有了中文开发文档...

Global site tag (gtag.js) - Google Analytics