`
iamlibo
  • 浏览: 68221 次
社区版块
存档分类
最新评论

JSF组件ID重复的问题

阅读更多

在JSF组件开发过程遇到一个问题.就是当自己开发的组件再次提交的时候会提示一个错误:

Duplicate component ID ... found in view.

意思是说在ViewRoot中已经存在一个同名的组件了.这是JSF不允许的.

后来在网上苦苦的找....终于找到这个一篇:http://www.jroller.com/mert/entry/duplicate_component_id_found_in 部分原文如下:


I stated some possible solutions for the exception. <o:p>

1. If you are dynamically adding child components to a UIComponent, also set the id of the child components explicitly.

<o:p>2. If you are using JSTL tags like forEach, if, choose and when, make sure you specify unique ids for the components defined between these tags at each iteration. For example,

<o:p><c:forEach>
<theComponent id="componentId + unique value for each iteration" />
</c:forEach><o:p>

<o:p>The id for theComponent should be composed with a value that is unique each iteration.</o:p>

<o:p>3. If you are developing a custom JSF Component just define id attribute in .tld file. You don?t need to specify id property in tag class. Because it inherits the id from UIComponentBase. So you should also set the properties of the super class within setProperties() method of the component.

<o:p>4. You cannot determine an id like "_idX" manually in your jsp source code, it is not a valid component identifier (cannot start with "_" ) so re-check the previous steps :)

其中第三条正是我遇到的问题的原因的答案.就是在自己开发的组件中,只需在tld文件中指定id属性,不需在tag.class中再设置id属性.具体的是不能再有setId(String id)这样的方法了.因为父类UIComponentELTag中已存存在这个属性.而且是在tld中一定要设置成静态的String类型.不能是ValueExpression类型

在tld文件中这样设置id属性

<attribute>
<name>id</name>
<rtexprvalue>false</rtexprvalue>
<type>java.lang.String</type>
</attribute>
然后把tag class中的id 属性和setId方法去掉.

^_^

一点感想:

成功和失败真的是一步的距离、一时的闪念。在寻找答案的过程中真是想放弃自己开发的这个组件,但另一种信念使我没有放弃,最后终于解决了。

用一个小小组件中的一个问题的解决来说成功与失败也许是小题大做,但这个成功的信念是一样的。只要坚持就会有结果!


<!----> Technorati : JSF

分享到:
评论
1 楼 will-vip 2009-03-06  
谢谢,刚好需要这个内容。

相关推荐

    jsf组件开发源码

    在"jsf组件开发源码"中,我们很可能是要探讨如何创建自定义的JSF组件,以及源码背后的实现逻辑。 首先,JSF组件是由UIComponent类及其子类构成的。每个组件都是一个独立的UI元素,具有渲染、属性和事件处理能力。...

    jsf组件树相关资料

    它提供了一种声明式的方式来创建用户界面,其中JSF组件树是其核心概念。JSF组件树是由多个组件构成的层次结构,这些组件可以是HTML元素、自定义组件或者其他复杂的UI结构。在JSF生命周期中,组件树扮演着至关重要的...

    JSF 组件开发.rar

    2. **UIComponent接口**:所有JSF组件都实现了UIComponent接口,提供基本的属性和方法,如id、rendererType和children等。 3. **渲染器(Renderer)**:负责将组件转换为HTML或其他客户端可理解的格式。不同的组件...

    JSF分页组件2

    **JSF分页组件2详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建Web应用程序的MVC(Model-View-Controller)框架。在处理大量数据时,分页功能是必不可少的,它能够帮助用户更有效地浏览和管理信息。在...

    在JSP中用JSF组件

    JSF组件包含若干个Java类和配置文件。为创建一个自定义JSF组件,您需要开发一个扩展JSF基本组件类的Java类;为默认呈现软件包开发呈现程序;开发一个将在JSP页面中用于描述标签的Java类;编写一个标签库定义(TLD)...

    JSF创建自定义组件

    【JSF创建自定义组件】 JSF(JavaServer Faces)是一种用于构建Web应用程序的MVC框架,它允许开发者创建可重用的UI组件。在JSF中,自定义组件允许开发人员扩展框架的功能,以满足特定项目的需求。下面将详细解释...

    自定义 JSF 组件

    在JavaServer Faces (JSF)框架中,自定义组件是扩展其功能的关键手段,它允许开发者根据特定需求创建具有独特特性的UI组件。本章将深入探讨如何自定义JSF组件,并通过实例讲解开发过程。 首先,JSF组件模型借鉴了...

    JSF 组件WebSphere 平台配置使用说明

    JSF 组件WebSphere 平台配置使用说明

    编写JSF用户自定义UI组件(之五)

    在JSF(JavaServer Faces)框架中,用户自定义UI组件是实现个性化界面和扩展功能的关键部分。这篇博文“编写JSF用户自定义UI组件(之五)”可能深入探讨了如何创建和使用自定义组件的过程,虽然描述部分为空,但我们...

    一个上传文件的jsf组件

    本篇文章将深入探讨如何使用JSF组件实现文件上传功能,并结合描述和标签来阐述这一主题。 首先,我们需要理解JSF组件的工作原理。JSF是一种基于Java的MVC(模型-视图-控制器)框架,用于构建动态的、数据驱动的Web...

    《JSF自定义组件》

    JSF自定义组件学习的好教材

    JSF2.0实战 - 4、自定义组件

    在JavaServer Faces (JSF) 2.0中,自定义组件是开发人员扩展框架功能的关键方式。通过创建自定义组件,你可以构建符合特定需求的用户界面元素,这些元素可以复用并集成到多个JSF应用程序中。本教程将深入探讨如何在...

    jsf自定义组件的实现

    【JSF自定义组件实现详解】 在JavaServer Faces (JSF)框架中,自定义组件允许开发者根据项目需求创建具有特定功能的UI元素。本文将引导你逐步了解如何在JSF中实现一个自定义组件,从基础开始,一步步构建一个简单的...

    JSF1.2日历组件

    3. **组件属性**:JSF组件可以有各种属性,如`value`表示组件的当前值,`converter`用于转换用户输入,以及`rendered`决定组件是否应在页面上渲染。日历组件可能包含`date`属性,用于存储选择的日期,以及`...

    JSF UI 组件详解

    JSF UI 组件详解

    jsf 自定义组件开发

    UIComponent定义了组件的基本属性,如ID、标签和事件处理,而ValueHolder则负责组件的值管理。自定义组件通常需要继承这两个接口或它们的实现类,例如UIInput或UICommand。 2. **创建组件** 开发自定义组件通常...

    JSF组件标签介绍及详解

    只要介绍JSF中各个组件标签的用法,对初学者来说是个很不错的资料哦!

    JSF分页组件

    **JSF分页组件详解** JSF(JavaServer Faces)是一种用于构建Web应用程序的Java EE框架,它提供了用户界面组件和事件处理模型,简化了开发过程。在大型数据展示时,分页是必不可少的功能,可以帮助用户更有效地浏览...

    Ext组件转化成JSF

    【Ext组件转化成JSF】是指将基于ExtJS的组件转换为JavaServer Faces (JSF)框架中的组件,以便在JSF应用中使用。ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件,而JSF是一种Java Web应用程序开发框架,...

    创建JSF自定义组件

    本教程将深入探讨如何在JSF环境中创建自定义组件。 ### 1. 自定义组件概述 在JSF中,组件是UI的基本构建块,可以是简单的HTML元素,如按钮或输入框,也可以是复杂的组件,如表格或下拉菜单。自定义组件允许开发者...

Global site tag (gtag.js) - Google Analytics