Trigger listener clicking on ace:textEntry

296 Views Asked by At

I'm using JSF 2.0 and I want to invoke a function defined in a Java controller when I click on an ace:textEntry.

I tried in this way:

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

but when my page is open, the click event is called instantly.

So, I tried with:

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

but my page is not rendered.

Is there another way to implement this behaviour ?

PS: I can use similar JSF components instead of ace:textEntry too.

1

There are 1 best solutions below

1
Adam Waldenberg On BEST ANSWER

First, you do not access getters directly in JSF for value backing - you access the property. Secondly, you should call the listener with the correct signature. To correct your example I would first rewrite the call like this,

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

Then define MyController, like this;

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