Как исправить Target Unreachable, идентификатор «bean» разрешен до нуля?

Я использую JSF 2.1.7 с Primefaces 3.2, CDI и Apache MyFaces CODI для доступа к @ViewScoped.

Все работает абсолютно нормально, но когда я передаю bean-компонент на другую страницу через ui: param, а затем пытаюсь использовать этот bean-компонент специально с запросом ap: ajax, я получаю сообщение «Target Unreachable, идентификатор bean-компонента разрешен для нулевой"

<ui:include src="page.xhtml">
   <ui:param name="bean" value="#{formBean}" />
</ui:include>

Затем на page.xhtml я пытаюсь это сделать.

<p:gmap zoom="15" type="HYBRID" model="#{bean.simpleModel}">
   <p:ajax event="markerDrag" listener="#{bean.onMarkerDrag}" />
</p:gmap>

Первый вызов bean.simpleModel разрешается правильно. Вызов ajax для bean.onMarkerDrag не работает.

Мое объявление formBean — @Named("formBean"), @ViewScoped.

Любые идеи?


person peetss    schedule 26.10.2012    source источник


Ответы (3)


У меня была такая же проблема. В моем случае я использовал

<p:commandButton value="Edit" icon="ui-icon-pencil" actionListener="#{bean.edit}" />

внутри шаблона, включенного через <ui:include>, и получил то же сообщение об ошибке.

Интересно, что следующие альтернативы действительно работали:

actionListener="#{bean.edit()}"
action="#{bean.edit}"
action="#{bean.edit()}"

Может, тебе стоит попробовать

<p:ajax event="markerDrag" listener="#{bean.onMarkerDrag()}" />

то есть добавление круглых скобок к выражению вашего метода.

person Daniel Beer    schedule 21.02.2013

@ViewScoped сложна с CDI, она не полностью совместима. Попробуйте использовать @SessionScoped.

Если это работает, попробуйте @ViewAccessScoped (поскольку вы используете Codi). Эта область в основном адаптирует ViewScope для использования CDI.

Все еще проблемы или уже используете это? Затем попробуйте @SessionScope и сообщите, что произошло.

person Karl Kildén    schedule 27.10.2012
comment
ViewScoped и ViewAccessScoped — это не одно и то же. Только слово «Вид» одинаковое, но поведение обоих областей действия совершенно разное. С CODI вы можете использовать оба с CDI. - person Dar Whi; 29.10.2012
comment
Да, извините, я неправильно запомнил. Я неправильно прочитал документы о предоставленном адаптере в codi для viewscope - person Karl Kildén; 29.10.2012
comment
На самом деле нет (совместимой) реализации ViewScoped в CDI. Это специфично для JSF, и смешивание аннотаций CDI/JSF таким образом просто не сработает. - person Darrell Teague; 01.03.2013
comment
@DarrellTeague Я использую адаптер от Codi в производстве, он очень хорошо работает для меня. - person Karl Kildén; 14.03.2013
comment
Это не похоже на проблему области видимости, а скорее на ошибку в оценке атрибута слушателя ‹p:ajax› в контексте ‹ui:include› - person Lars Gendner; 05.01.2018

Это не сработает, потому что это противоречит правилам @ViewScoped.

person Dar Whi    schedule 28.10.2012