【发布时间】:2011-12-03 00:51:59
【问题描述】:
针对 Infragile 在另一个线程中的请求,我将此作为一个单独的问题而不是后续问题提出。
这是我试图解决的问题: 我正在从 JSF1.2 迁移到 JSF2。在 JSF1.2 中一切正常。 我已经将一个关键项目重写为一个复合组件,它基本上是通过在代码中添加组件在我的支持 bean 中创建的一个面板。
特别是,我在代码中创建了 h:inputText 和 h:selectOneMenu 组件以及“应用”h:commandButton。 “应用”按钮有一个动作侦听器,用于检查 h:inputText 和 h:selectOneMenu 组件中的值。所有这些工作正常,但是当我获取 h:inputText 或 h:selectOneMenu 组件中的值时,我得到的是原始值,而不是用户输入的新值。就像我说的,这在 JSF1.2 中运行良好(我得到了新值),但由于某种原因在 JSF2 中不行。
我已经尝试了几种方法来解决这个问题,但没有奏效,所以我想我会在 h:inputText 和 h:selectOneMenu 项中添加 ajax 行为,当这些组件中的值发生变化时,我可以调用另一个支持用于获取新值的 ajax 行为的 bean 侦听器。
我正在尝试将 ajax 行为添加到我在代码中创建的组件(未绑定到页面组件)。我可以毫无问题地创建组件。但是,我遇到的问题是如何将 ajax 行为添加到组件中。
有人可以发布示例代码来为值更改或模糊事件添加 ajax 行为吗?这是我用来在代码中创建组件的代码 - 我需要如何修改它以添加 ajax 行为? hpg = 新的 HtmlPanelGrid(); 儿童 = hpg.getChildren(); children.clear(); …… 输入 = 新的 HtmlInputText(); …… children.add(输入);
我必须添加什么代码来替换“在此处添加 ajax 行为”行,以及侦听器方法的争论是什么(替换下面 ????? 的方法的争论)?
public void myAjaxListener(?????) { ...... {
一段时间以来,我一直在努力解决这个问题。我觉得我很接近,但不知道我需要的语法。如果有帮助,我可以提供有关如何获取组件 ID 和在操作侦听器中搜索值的更多信息。
谢谢
【问题讨论】: