Атрибут Binding приводит к дублированию идентификатора компонента, найденного в представлении

Мое понимание заключается в том, что C ++ позволяет определять константные члены в классе, если он является целым типом.

Вы вроде как правильно. Вы можете инициализировать статические константные интегралы в объявлении класса, но это не определение.

http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp ? topic = / com.ibm.xlcpp8a.doc / language / ref / cplr038.htm

Интересно, если я прокомментирую вызов std :: min, компиляция кода и ссылки просто отлично (даже если для теста :: N также упоминается предыдущая строка). Любая идея о том, что происходит?

std :: min принимает свои параметры по ссылке const. Если это взяло их по стоимости, у вас не было бы этой проблемы, но поскольку вам нужна ссылка, вам также потребуется определение.

Вот глава / стих:

9.4.2 / 4 . Если член данных static имеет тип интеграла const или const, его объявление в определении класса может указывать константный инициализатор, который должен быть интегральным постоянным выражением (5.19). В этом случае член может фигурировать в интегральных постоянных выражениях. Член все еще должен быть определен в области пространства имен, если он используется в программе, и определение области пространства имен не должно содержать инициализатор.

См. Ответ Чу для возможного обходного пути.

13
задан BalusC 12 August 2015 в 18:59
поделиться

1 ответ

Повторяющиеся ошибки идентификатора компонента могут возникать, когда:

  • Один и тот же идентификатор используется для различных компонентов в одном и том же NamingContainer .
  • Физически различные компоненты привязаны к одному и тому же свойству одного компонента.
  • На странице включения вместо родительской страницы объявлен < f: subview > .
  • Одна и та же страница включения включается несколько раз в один и тот же NamingContainer .
  • Компонент динамически создается без назначения явного идентификатора.

Здесь NamingContainer является среди прочих < h: form > , < h: dataTable > и < f: subview > .

При использовании привязки необходимо связать ее со свойством, которое используется исключительно рассматриваемым компонентом на основе запроса. Ваш конкретный случай указывает на то, что эта привязка совместно используется несколькими компонентами, возможно, различными запросами. Когда компонент связывается со свойством компонента-основы, то компонент-основа не должен находиться в более широкой области, чем область запроса. См. также JSF 2,0 specification глава 3,1,5 (акцент мой):

3,1,5 Компоненты привязки

...

Привязки компонентов часто используются совместно с JavaBeans, которые динамически создаются с помощью средства создания управляемых компонентов (см. раздел 5.8.1 «VariiveResolver and the Default VariureResolver»). Настоятельно рекомендуется, чтобы разработчики приложений размещали управляемые бобы, на которые указывают выражения привязки компонентов, в области «запрос». Это связано с тем, что размещение его в области сеанса или приложения потребует безопасности потока, поскольку экземпляры UIComponent зависят от выполнения внутри одного потока. При размещении привязки компонента в «сеансовой» области также могут иметь место негативные последствия для управления памятью.

См. также:

34
ответ дан 1 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: