单击ace:textEntry

时间:2019-07-15 11:00:00

标签: jsf icefaces

我正在使用JSF 2.0,我想在单击ace:textEntry时调用Java控制器中定义的函数。

我以这种方式尝试过:

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

但是当我打开页面时,click事件会立即被调用。

所以,我尝试了:

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

但是我的页面没有显示。

还有另一种方法来实现此行为吗?

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

1 个答案:

答案 0 :(得分:2)

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

<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... */
    }
}