jsficefaces

Trigger listener clicking on ace:textEntry


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.


Solution

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