如何在 inputText 聚焦或更改值时呈现 outputText?

How to render outputText when inputText is focused or changes value?

我正在学习 Java EE,但我 运行 遇到了一个我无法解决的问题。我有这个 xhtml:

<h:form>
            <fieldset>
                <legend>Random Number (with execute="someId")</legend>
                Range:
                <h:inputText value="#{numberGenerator.range}"
                             id="rangeField">
                    <f:ajax event="change" execute="@this"
                            render="numField3"/>
                    <f:ajax event="focus" execute="@this"
                            render="numField3"/>
                </h:inputText><br/>
                <h:commandButton value="Show Number"
                                 action="#{numberGenerator.randomize}">
                </h:commandButton><br/>
                <h2><h:outputText value="#{numberGenerator.number}"
                                  id="numField3"/></h2>
            </fieldset>
        </h:form>

这是豆子:

package javaeetutorial.ajaxguessnumber;
import javax.faces.bean.*;
@ManagedBean

    public class NumberGenerator  {
        private double number = Math.random();
        private double range = 1.0;

        public double getRange() {
            return(range);
        }

        public void setRange(double range) {
            this.range = range;
        }

        public double getNumber() {
            return(number);
        }

        public double getNumber2() {
            return(Math.random() * range);
        }

        public String randomize() {
            number = range * Math.random();
            return(null);
        }
    }

我的问题是,每当 inputText 获得焦点或更改值时,我如何设法使值呈现在 outputText 中?到目前为止,我只在输入文本聚焦时设法更新它,但在值更改时没有任何反应。

尝试 keyup 而不是 change。支持的事件列表是:blurchangeclickactiondblclickfocuskeydownkeypresskeyupmousedownmousemovemouseoutmouseovermouseupselect

虽然这可能会向您的服务器触发大量 ajax 事件,因此请为此做好准备。 次击键你都会得到一个事件。

来源:https://www.beyondjava.net/a-comprehensive-guide-to-jsf-ajax