2010-05-31 4 views
2

Я создаю компонент facelet, который я намерен включать много раз на одной странице.Facelets duplicate id

Мне нужно определить один тег a4j: outputPanel внутри моего компонента и дать ему идентификатор, чтобы можно было повторно передать этот выходной элемент через ajax. Но facelets, похоже, не справляется с этой ситуацией, поскольку выбрано «duplicateId Exception». Я частично понимаю, почему это происходит. Я включил несколько компонентов на одной странице, но каждый компонент содержит outputPanel с тем же самым жестким кодом.

  1. Может ли id не быть жестко закодированным?
  2. Есть ли какой-либо тег facelets, который создает границу, в которой вам не нужно заботиться о конфликтах между идентификаторами объектов внутри этой границы с идентификаторами объектов за пределами границы?

ответ

0

Это способ, чтобы избежать жестко закодированные идентификаторы, передавая идентификатор в компонент, такой как:

ас: testComponent ID = "someId"

В компоненте facelet затем:

h: outputText id = "# {id} _outputText"

Проблема в том, что тринидад не поддерживает этот язык EL для атрибута partialTriggers. Если кто-то знает, как это сделать, напишите на этом сайте объяснение.

+2

Одна проблема, которую я вижу с вашей Например, у вас есть знак подчеркивания в середине вашего идентификатора, который приведет к исключению IllegalArgumentException – Adam

+0

, неважно, это не должно быть проблемой, но посмотрите здесь на мой вопрос по этой проблеме: http://stackoverflow.com/вопросы/5972433/что-это-The-правила-в-а-JSF-ид/5972462 # 5972462 – Adam

1

Создание подзапроса на самом деле происходит с помощью partialTriggers. < УИ: компонент > < е: подтаблицы ID = "# {ID}" > .... код компонента </ф: подтаблицы > </УИ: компонент >