2010-05-31 126 views
2

我正在创建一个facelet组件,我打算在单个页面中包含多次。Facelets重复ID

我需要在我的组件中定义一个a4j:outputPanel标签并给它一个id,这样才有可能通过ajax reRender这个outputPanel。但facelets似乎没有处理这种情况,因为“duplicateId Exception”被抛出。我有点不明白为什么会这样。我在单个页面中包含了几个组件,但每个组件都包含具有相同硬编码ID的outputPanel。

  1. 身份证不能硬编码?
  2. 是否有任何facelets标签可以创建边界,在该边界中,您不必关心该边界内的对象的id与边界外的对象的id之间的冲突?

回答

0

这是通过使ID到组件诸如以避免硬编码ID的方式:

AC:testComponent ID = “someId”

在的facelet组件随后:

h:outputText id =“#{id} _outputText”

问题是特立尼达不支持partialTriggers属性的EL语言。如果有人知道如何做到这一点,请发布到本网站的解释。

+2

一个问题我看你的例如,你在你的id中间有一个下划线,这将导致IllegalArgumentException – Adam 2011-05-12 00:28:30

+0

没关系,这不应该是一个问题,但看看我的问题在这个问题上的详细信息:http://stackoverflow.com /问题/ 5972433 /什么,是最规则-FOR-A-JSF-ID/5972462#5972462 – Adam 2011-05-12 15:17:19

1

实际上创建子视图会导致partialTriggers的问题。 < UI:组件> < F:子视图ID = “#(编号)” > ....组件代码 </F:子视图> </UI:组件>