2

我在使用 JSF2.0 Ajax Tag 时遇到了非常奇怪的问题。以下是对我造成问题的步骤

  1. 我的项目使用 JSF2.0 和 Spring 3.0。JSF 连接到 Spring 控制器,生命周期由 Spring 管理。
  2. 我的控制器是请求范围的。

到目前为止一切正常

我有一个 selectOne 下拉菜单,在下拉菜单中选择一个值时,它会呈现屏幕的底部,该屏幕底部有另一个下拉菜单。我在父面板组上使用渲染属性来显示和隐藏此下拉菜单。

但是,对于选择值时新呈现的下拉菜单,ajax 侦听器(在其中定义的 F:ajax 标记)不会被调用。我看到以下情况发生

  1. bean 被重新初始化,因为它是请求范围。我看到我的 postconstruct 正在执行。
  2. 我在客户端的数据对象中看到成功消息。

唯一缺少的是没有调用侦听器方法。

无论如何要调试生命周期并找出问题所在?

4

1 回答 1

1

如果在处理 ajax 请求期间评估rendered其父组件之一的属性,则不会调用 ajax 操作侦听器。<f:ajax>false

每个请求都会重新创建一个请求范围的 bean,因此它的所有属性都将重置为默认值,除非在 (post) 构造函数中以其他方式初始化。如果属性后面的rendered属性没有根据某些请求参数正确重新初始化,那么它将false像初始请求一样进行评估。

要修复它,您需要根据请求参数在 bean 的(后)构造函数中进行适当的初始化,或者只是将 bean 放在 JSF 视图范围内。

也可以看看:

于 2012-07-27T01:51:47.563 回答