JSF f:ajax-listener nicht aufgerufen

Ich versuche, mit einer h:inputText-Schalter mit einer anderen, wenn ein h:commandButton geklickt wird. Um dies zu tun, ich bin versucht zu binden eine f:ajax-Befehl mit den h:commandButton, mit dem Hörer Einstellung ein Wert an der bean (entscheiden, welche man angezeigt), und re-rendering-Bereich.

Habe ich versucht, mit Hörer auf das f:ajax, actionListener auf den h:commandButton action auf den h:commandButton mit execute auf das f:ajax. Nichts funktionierte. Die mothed ich bin versucht zu rufen, ist nicht genannt wird, an alle - es gibt keine println (siehe, was folgt).

Die panelGroup wird neu gerendert, das ist, warum ich brauche die onevent-attribute, die re-legt einige JavaScript-Hinweis-text auf der Grundlage der Titel (ich hatte eine frühere Frage mit dieser).

Die Methode, die ich bin versucht zu rufen:

public void morePressed(AjaxBehaviorEvent e) {
    easySearch = !easySearch;
    System.out.println("Made it!");
}

JSF-segment, das nicht funktioniert (beachten Sie die Letzte h:commandButton versucht, re-Rendern, die panelGroup):

<h:form>
    <h:panelGroup id="switchSearchTexts">
        <h:inputText accesskey="s" alt="Search" id="searchBoxPeople" title="Search Plebeians" valueChangeListener="#{peopleBean.simplePersonQuery}" size="25" rendered="#{peopleBean.easySearch}">
            <f:ajax render="peopleDataTable" event="keyup" />
        </h:inputText>

        <h:inputText accesskey="s" alt="Search First Name" id="searchBoxFN" title="Search First Name" size="25" rendered="#{!peopleBean.easySearch}">
            <f:ajax render="peopleDataTable" event="keyup" />
        </h:inputText>
    </h:panelGroup>

    <div id="expandBox">
        <h:inputText id="searchBoxLN" alt="Search Last Name" styleClass="hideToggle" title="Search Last Name" size="25" />
        <h:inputText id="searchBoxAddress" alt="Search Address" styleClass="hideToggle" title="Search Address" size="25" />
    </div>

    <h:commandButton type="button" styleClass="moreButtonAsText" id="moreButtonAsText" value="&#x25b8;More">
        <f:ajax listener="#{peopleBean.morePressed}" render="switchSearchTexts" event="click" onevent="callFunctionAjaxRequest"  />
    </h:commandButton>

Dies ist der JavaScript (jQuery), die ich anfügen auf die Schaltfläche "Mehr" auf automatisch. Ich gebe es nicht, weil ich denke, es könnte helfen, aber ich weiß nicht, ob das nicht mit dem ajax-listener in irgendeiner Weise:

$(function() {
    textboxHint();
    $('input[id$="moreButtonAsText"]').toggle(function(e) {
        $(this).prop('value', '\u25c2Less');
        $(".hideToggle").show(300);
    }
    , function () {
        $(this).prop('value', '\u25b8More');
        $(".hideToggle").hide(100);
        $('input[id$="searchBoxAddress"]').prop('value', function() {
            return $(this).prop('title');
        });
        $('input[id$="searchBoxAddress"]').blur();
    });
});

Habe ich keine Ahnung. Wie gesagt, ich habe versucht actionListener auf h:commandButton mit verschiedenen appraoches, sowie verschiedene Ansätze, um den Hörer auf die ajax. Kann jemand sehen, warum der listener funktioniert nicht?

Update:

Was ich am Ende tun, bevor er eine Antwort, ist die Umwandlung alles, um das ein-und ausblenden, basierend auf JavaScript, mit Sachen, die ich brauchte, verborgen, wenn Sie nicht über javascript, ursprünglich verborgene, etc.

Aber ich brauche das f:ajax anderswo, jetzt.

Die Lösung ist event="click" auf den h:commandButton. Ich noch tun jetzt wissen, warum das so war, so dass es zu brechen, aber hey, was auch immer funktioniert.

InformationsquelleAutor twmb | 2012-03-24
Schreibe einen Kommentar