点击 ace:textEntry 触发侦听器

Trigger listener clicking on ace:textEntry

我正在使用 JSF 2.0,我想在单击 ace:textEntry.

时调用 Java 控制器中定义的函数

我这样试过:

<ace:textEntry readonly="true" value="#{myController.getValue()}"
    onclick="#{myController.myFunc()}"/>

但是当我的页面打开时,会立即调用点击事件。

所以,我尝试了:

<ace:textEntry readonly="true" value="#{myController.getValue()}">
     <ace:ajax event="click" listener="#{myController.myFunc()}"/>
</ace:textEntry>

但是我的页面没有呈现。

还有其他方法可以实现这种行为吗?

PS:我也可以使用类似的 JSF 组件来代替 ace:textEntry。

首先,您不直接在 JSF 中访问 getter 以获取价值支持 - 您访问 属性。其次,您应该使用正确的签名调用侦听器。要更正您的示例,我会首先像这样重写调用,

<ace:textEntry readonly="true" value="#{myController.value}">
     <ace:ajax event="click" listener="#{myController.myFunc}"/>
</ace:textEntry>

然后定义MyController,像这样;

@Named
@ViewScoped
public class MyController {
    private value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public void myFunc(javax.faces.event.AjaxBehaviorEvent event) {
        /* Do somethinig here... */
    }
}