gpt4 book ai didi

jsf-2 - 从监听器方法更改 inputText 值

转载 作者:行者123 更新时间:2023-12-01 23:00:32 28 4
gpt4 key购买 nike

我有一个输入文本:

<h:inputText id="result" value="#{guessNumber.result}"/>

和另一个输入文本:
<h:inputText id="name" value="#{guessNumber.named}" onchange="submit()" valueChangeListener="#{guessNumber.processValueChange}"/>

在 processValueChange 方法中,我添加了以下行:
result = "hello";

但是“结果” inputText 的显示值仍然未链接,有什么问题?

最佳答案

valueChangeListener 方法不打算以这种方式对模型进行更改。它旨在倾听模型值的实际变化,恰好在您掌握新旧模型值的那一刻。例如,执行一些日志记录。它在验证阶段结束时运行,正好在更新模型值阶段之前。因此,在更新模型值阶段,您自己在监听器方法中对模型值所做的任何更改都将被覆盖。
你需要一个 <f:ajax listener> 来代替。这在调用操作阶段运行,该阶段在更新模型值阶段之后。

<h:outputText id="result" value="#{guessNumber.result}" />
<h:inputText id="name" value="#{guessNumber.named}">
<f:ajax listener="#{guessNumber.namedChanged}" render="result" />
</h:inputText>
(请注意,我已经删除了 onchange="submit()" JavaScript 处理程序!)
public void namedChanged(AjaxBehaviorEvent event) {
result = "Hello, you entered " + named;
}
(参数是可选的;如果你不需要它,就省略它)
也可以看看:
  • When to use valueChangeListener or f:ajax listener?
  • 关于jsf-2 - 从监听器方法更改 inputText 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645593/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com