Может быть, кто-то может прояснить это для меня.У меня есть h: selectOneMenu, который должен что-то сделать, как только пользователь выберет что-то из списка, а затем повторно отобразить ссылку на основе результатов.
<h:selectOneMenu value="#{backingBean.itemSelected}" valueChangeListener="#{backingBean.methodThatDoesStuff}" onchange="submit()" >
<s:selectItems var="_items" value="#{backingBean.itemList}"
label="#{_items.Name}" />
<s:convertEntity />
</h:selectOneMenu>
Я предполагал, что когда пользователь выбирает элементзаполнил бы поле в компоненте поддержки и затем запустил methodThatDoesStuff.Но этого не происходит.backingBean.itemSelected не устанавливается, пока ПОСЛЕ вызова метода.Я могу получить событие и использовать его непосредственно в методе:
public void methodThatDoesStuff(ValueChangeEvent event){
Item item = (Item)event.getNewValue();
.... do stuff, set a flag to display link later
}
Это работает.
Но это оставляет мой aComponent установленным на предыдущее значение, поэтому в первый раз он будет нулевым, затем изменит настройки, основываясь на последнем выбранном элементе (так что я всегда позади:
public void methodThatDoesStuff(){
Item item = this.itemSelected;
.... do stuff, set a flag to display link later
}
Я пробовал:
<h:selectOneMenu value="#{backingBean.itemSelected}" >
<s:selectItems var="_items" value="#{backingBean.itemList}" label="#{_items.Name}" />
<a:support event="onchange" ajaxSingle="true" reRender="aComponent" action="#{backingBean.methodThatDoesStuff}" />
<s:convertEntity />
</h:selectOneMenu>
Но это не работает,Я использую ValueChangeEvent или нет. Является ли использование объекта события единственным способом получить выбранный в данный момент элемент? Это JSF 1.2 и Seam 2