我使用JSF 2.1.7与Primefaces 3.2,CDI和Apache MyFaces CODI访问@ViewScoped。
一切都工作得非常好但是当我通过ui:param将bean传递到另一个页面然后尝试使用该bean专门用于ap:ajax请求时,我收到消息“Target Unreachable,identifier'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的第一次调用正确解析。对bean.onMarkerDrag的ajax调用不会。
我对formBean的声明是@Named(“formBean”),@ ViewScoped。
有什么想法吗?
答案 0 :(得分:2)
我遇到了同样的问题。在我的情况下,我使用了
<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()}" />
即。在方法表达式中添加括号。
答案 1 :(得分:0)
@ViewScoped与CDI相比很棘手,它不完全兼容。考虑尝试@SessionScoped。
如果有效,请尝试使用@ViewAccessScoped(因为您使用Codi)。该范围基本上使ViewScope适用于CDI使用。
仍有问题或已经使用过吗?然后尝试@SessionScope并报告发生的事情。
答案 2 :(得分:0)
这不起作用,因为它违反了@ViewScoped规则