Как добавить более одного метода к слушателю f: ajax в h: selectOneMenu? - PullRequest
0 голосов
/ 18 марта 2020

Есть ли возможность добавить несколько методов в h: selectOneMenu? Я хотел бы, чтобы методы handleEventMethod и myMethod вызывались при изменении выбора selectOneMenu. Кроме того, важно, чтобы один метод принадлежал Java Bean, а другой - к JavaScript файлу. Я пробовал следующий код:

<h:selectOneMenu id="selectOneComboBox" value="some value">
    <f:selectItem itemLabel="label" itemValue="value" />
    <f:selectItems value="some list" var="v" itemLabel="some label" itemValue="some value" />
    <f:ajax execute="@this" onevent="handleEventMethod" render="@this part1 part2 "
        listener="#{mybean.myMethod}" />
</h:selectOneMenu>

Этот пример на самом деле делает то, что я хочу, но часть onevent ajax - это обходной путь, которого я хотел бы избежать, потому что событие обрабатывается три раза (до , на событие и после события), и это не обязательно. Я также попробовал это следующим образом:

<h:selectOneMenu id="selectOneComboBox" value="some value" onchange="handleEventMethod(e);">
    <f:selectItem itemLabel="label" itemValue="value" />
    <f:selectItems value="some list" var="v" itemLabel="some label" itemValue="some value" />
    <f:ajax execute="@this" render="@this part1 part2 " listener="#{mybean.myMethod}" />
</h:selectOneMenu>

Этот случай вообще не работает, хотя вызывается onchange handleEventMethod (e), часть ajax полностью игнорируется, поэтому myMethod не называется. Поэтому вопрос заключается в том, как добавить более одного метода в selectOneMenu, используя только один прослушиватель, который вызывает оба метода. Может быть, есть такое решение:

<h:selectOneMenu id="selectOneComboBox" value="some value">
    <f:selectItem itemLabel="label" itemValue="value" />
    <f:selectItems value="some list" var="v" itemLabel="some label" itemValue="some value" />
    <f:ajax execute="@this" render="@this part1 part2 "
        listener="#{mybean.myMethod}, handleEventMethod(e)," />
</h:selectOneMenu>

У кого-нибудь есть идея? Спасибо!

...