【问题标题】:JSF component doesn't update if changes came from grid click如果更改来自网格单击,JSF 组件不会更新
【发布时间】:2011-11-18 11:31:17
【问题描述】:

我有一个 JSF/IceFaces 应用程序,其中有一个屏幕分为 3 个部分。搜索字段、网格和下面的一些详细信息字段。目前,如果我在搜索字段中输入一些数据并单击“搜索”按钮 (!),网格会显示结果并调用某个方法,将第一个结果记录的详细信息放入网格下方详细信息字段的支持 bean。这说明我将数据放入详细信息字段的方式没有问题。

但是,我也有一个 gridclicklistener 方法,它想根据选择更改详细信息字段。单击后,使用正确的参数调用相同的方法,如果在单击“搜索”按钮后调用该方法效果很好。数据在支持 bean 中更新,但即使我单击浏览器中的刷新按钮,更改也不会呈现。

我发现如果我点击搜索按钮,就会从InvokeApplicationPhase.execute 调用数据更新方法。当我点击网格后到达这条线时,它来自ApplyRequestValuesPhase。

您是否有任何想法可以产生这种影响以及如何完成这项工作?

更新:

我可以清楚地看到 backing bean 中的更新值,但它根本没有反映在屏幕上,即使在 F5 之后也是如此。

【问题讨论】:

  • 我不太了解这篇文章,但您必须确保/调试您的模型已更新。
  • 模型肯定更新了,我通过调试检查过
  • 显然有 2 个 HTTP 请求正在发送。使用 Firebug/Chrome 等 HTTP 跟踪器验证这一点。
  • 用 Firebug 检查过,但是点击网格后,只发送了一个 HTTP 请求。
  • 当我单击“搜索”按钮时会发送一个 HTTP 请求,并且字段值会很好地更新。当我点击网格并且字段值没有更新时,发送了一个 HTTP 请求。

标签: java jsf icefaces


【解决方案1】:

我不知道是什么导致了您原来的问题。

使用 icefaces 推送渲染器,您可以强制更新:

http://wiki.icefaces.org/display/ICE/Getting+Started+with+ICEfaces+2#GettingStartedwithICEfaces2-icepush

【讨论】:

  • 这种方法和浏览器按F5有区别吗?如果字段值不更新后一种方式,第一种方式对我有什么帮助..?
  • 如果在浏览器中刷新页面不起作用,那么通过推送机制启动重新渲染可能也不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多