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

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  
谢谢,刚好需要这个内容。

相关推荐

    JSF2.2.6+Spring + Hibernate整合可运行

    7. **JSF页面**:使用JSF组件创建的JSP或XHTML页面,与后台bean进行交互。 通过这个整合,开发者可以享受到JSF的UI便捷性,Spring的灵活性和Hibernate的ORM强大功能。这样的框架可以大大提高开发效率,减少代码重复...

    JSF学习笔记

    - **UI组件开发人员**:专门从事创建可重用的UI组件,这些组件可以在不同的项目中重复使用,以加速开发速度。 **JSF的主要优点**包括: - **职责分离**:确保前端设计者和后端开发者的工作不相互干扰。 - **组件化*...

    jsf实现基于ajax的上传例子

    #### 二、JSF组件实现Ajax上传进度条 接下来,我们将使用JSF技术和Ajax来实现一个可以显示文件上传进度的组件。该组件将利用Ajax定时向服务器发送请求,获取文件上传的进度,并更新前端界面中的进度条。 **实现...

    JSFRefresh

    在JSF中,一个常见的问题是在用户点击刷新按钮时可能会导致重复提交,这可能导致数据的不一致性和其他问题。下面我们将详细讨论如何在JSF中防止页面刷新时的重复提交。 **一、问题解析** 当用户点击浏览器的刷新...

    AJAX实战.pdf

    若表单嵌套于其他组件内,则需采用层次化的ID命名规则,如`ID1:ID2:ID3`。此外,对于希望触发AJAX请求的按钮,也应赋予相应的ID,以便于框架识别和处理。 ### 6. 实战案例分析 通过上述步骤,可以有效提升Web应用...

    apache-wicket

    2. **Wicket与其它组件框架的对比**:文档中提到Wicket与其他组件框架的对比,这暗示了Wicket的设计和特点与其他流行的框架如JSF(JavaServer Faces)、Struts或者Spring MVC存在差异。了解这些差异有助于开发者根据...

    基于wanAndroid 开发API,实现一个鸿蒙应用程序.zip

    总的来说,基于wanAndroid API开发鸿蒙应用程序需要掌握HarmonyOS的开发环境、JSF编程、网络请求、UI设计、组件化开发以及测试与发布流程。这是一个综合性的项目,能够帮助开发者深入理解鸿蒙系统的开发实践。

    Spring_Web_Flow_2[1].0_入门.pdf

    通过将 JSF 的各个组件进行封装,Spring Web Flow 2.0 可以轻松地与 JSF 进行整合。这为开发者提供了一种灵活的方式来使用 JSF 的各种组件,同时保持了 Spring Web Flow 的核心功能。 ##### 4. 与 Spring Security ...

    Primefaces dataExporter下載時顯示處理中1

    `p:dataExporter`组件用于导出Excel文件,`target`属性指定需要导出的数据表格ID,`fileName`属性设置下载文件的名称,`preProcessor`则可以自定义预处理函数,对导出的数据进行额外的处理。 需要注意的是,此解决...

    Java web 入门到精通

    内容部分仅包含重复的链接和商品ID,而不是具体的文字信息,因此无法生成有价值的知识点。 不过,我可以根据标题和描述生成一些Java Web入门到精通的相关知识点。Java Web是Java技术在网页开发中的应用,主要涵盖了...

    ADF笔记(1)

    - **优势**:这样做的好处是可以减少代码重复,提高代码的可维护性,并且可以让不同的页面共享相同的交互逻辑。 ##### 1.3 Taskflow的参数传递 - **实现方式**: 1. 在Taskflow中选择“Parameters”选项卡。 2. ...

    Portlet

    2. **互操作性**: 不同portlet容器可能实现不同的portlet API,互操作性是个问题。 3. **用户体验**: 由于portlet的大小限制,可能影响用户体验,需要精心设计UI和交互。 总的来说,Portlet是构建可扩展、模块化Web...

    SpringWebFlow

    这些规则根据方法返回的字符串值来强制执行,类似于JavaServer Faces (JSF)中的做法。这种抽象方式使得动作(Action)可以在不同的场景下被重用。 #### 二、SWF由谁支持? Spring Web Flow得到了Keith Donald和Erwin...

    Java Annotation注解.doc

    在实际开发中,Java注解被广泛用于Spring框架的依赖注入、JPA的实体映射、JSF的UI组件绑定等场景,极大地提高了代码的可维护性和灵活性。然而,对于更复杂的注解使用,如自定义注解生成XML映射文件,需要更深入的...

    Web2.0体系学习(自定义标签)

    - 假设我们有一个自定义标签`&lt;my:displayUser&gt;`,用于显示用户信息,可以在TLD中定义它的属性如`userId`,并在处理类中从请求或会话中获取用户数据,然后在JSP页面中使用该标签,如`${user.id}"/&gt;`。 6. **自定义...

    Java进阶路线

    - **HashSet**:实现了 Set 接口,不允许重复元素。 - **LinkedHashSet**:保持插入顺序的 HashSet 实现。 - **TreeSet**:实现 Set 接口,具有排序功能。 - **HashMap**:实现了 Map 接口,提供了键值对映射。 - **...

Global site tag (gtag.js) - Google Analytics