当<h:inputText>的值更改时,在托管bean中设置值

pFa*_*ace 3 jsf-2

我有一个JSF页面<h:inputText>.我想将值绑定到<h:inputText>值更改时的值.

豆:

@ManagedBean
@SessionScope
public class MyBean {

    private String in;
    //getter and setter

}
Run Code Online (Sandbox Code Playgroud)

视图:

<h:inputText value="#{myBean.in}" />
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 9

只需添加<f:ajax>.它会在HTML DOM change事件发生时(即编辑字段然后模糊时)提交值.

<h:inputText value="#{myBean.in}">
    <f:ajax />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

它的event属性已经默认为valueChange,所以它被省略了.它的execute属性已经默认为@this,所以它被省略了.如果您想要在完成时更新其他组件,请设置render属性.例如

<h:inputText value="#{myBean.in}">
    <f:ajax render="msg" />
</h:inputText>
<h:message id="msg" />
Run Code Online (Sandbox Code Playgroud)

如果要在成功设置侦听器时调用侦听器,请设置listener属性:

<h:inputText value="#{myBean.in}">
    <f:ajax listener="#{myBean.changeIn}" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
public void changeIn() {
    System.out.println("in has been changed to " + in);
}
Run Code Online (Sandbox Code Playgroud)

也可以看看: