Есть ли возможность добавить несколько методов в 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>
У кого-нибудь есть идея? Спасибо!