1

我正在使用 JSF 2.1.7 和 Primefaces 3.2、CDI 和 Apache MyFaces CODI 来访问 @ViewScoped。

一切工作正常,但是当我通过 ui:param 将 bean 传递到另一个页面,然后尝试通过 ap:ajax 请求专门使用该 bean 时,我收到消息,“目标无法访问,标识符 '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。

有任何想法吗?

4

3 回答 3

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()}" />

即在您的方法表达式中添加括号。

于 2013-02-21T00:05:52.380 回答
0

那是行不通的,因为它违反了@ViewScoped 的规则

于 2012-10-28T19:57:32.107 回答
0

@ViewScoped 对 CDI 来说很棘手,它不完全兼容。考虑尝试使用@SessionScoped。

如果它有效,请尝试使用 @ViewAccessScoped(因为您使用 Codi)。该范围基本上使 ViewScope 适应 CDI 使用。

仍然存在问题或已经在使用它?然后尝试@SessionScope 并报告发生的情况。

于 2012-10-27T20:25:12.297 回答